С помощью оператора as экспортируемым/импортируемым компонентам модуля можно назначить псевдоним. Затем для использования подобных компонентов применяется не их непосредственное имя, а их псевдоним.
Определим следующий модуль message.js:
let welcome = "Welcome";
const hello = "Hello";
function sayHello() {
console.log("Hello METANIT.COM");
}
class Messenger {
send(text){
console.log("Sending message:", text);
}
}
export {welcome as simpleMessage, hello, sayHello as printMessage, Messenger}
Здесь все компоненты модуля экспортируются в виде списка, в котором можно определить для компонента псевдним в виде:
компонент as псевдним
Так, для константы welcome определен псевдним simpleMessage, а для функции sayHello определен псевдним printMessage().
В этом случае при импорте модуля message.js данные компоненты будут доступны через свои псевднимы:
import {simpleMessage, printMessage, Messenger} from "./message.js";
printMessage();
const telegram = new Messenger();
telegram.send(simpleMessage);
Подобным образом можно указать псевдонимы и при импорте. Это может быть актуально, если имя импортируемого компонента довольно велико, и мы хотим установить для него более краткий псевдоним. Вторая причина: в модуле уже есть компоненты с таким именем, и чтобы избежать двойственности для одноименных компонентов подключаемого модуля установливаются псевдонимы. Третья причина - мы хотим дать компонентам более описательные выразительные имена.
Рассмотрим небольшой пример:
import {simpleMessage as messageText, printMessage as printHello, Messenger} from "./message.js";
const printMessage = ()=>console.log("Hello from main module");
printHello();
printMessage();
const telegram = new Messenger();
telegram.send(messageText);
Здесь в модуле импортируемой константе simpleMessage назначается псевдним messageText: simpleMessage as messageText
Кроме того, здесь определена функция printMessage(). Однако из модуля также импортируется компонент с таким же именем. И чтобы избежать двойственности,
импортируемому компоненту назначается псевдним printHello: printMessage as printHello
Далее для обращения к импортированным компонентам с псевднимами используются их псевдонимы.