TypeScript
Modules - exportation et importation
Recherche…
Bonjour tout le monde
//hello.ts export function hello(name: string){ console.log(`Hello ${name}!`); } function helloES(name: string){ console.log(`Hola ${name}!`); } export {helloES}; export default hello;
Charger à l'aide de l'index du répertoire
Si le répertoire contient le fichier nommé index.ts
il peut être chargé en utilisant uniquement le nom du répertoire (pour le fichier index.ts
fichier est facultatif).
//welcome/index.ts export function welcome(name: string){ console.log(`Welcome ${name}!`); }
Exemple d'utilisation de modules définis
import {hello, helloES} from "./hello"; // load specified elements import defaultHello from "./hello"; // load default export into name defaultHello import * as Bundle from "./hello"; // load all exports as Bundle import {welcome} from "./welcome"; // note index.ts is omitted hello("World"); // Hello World! helloES("Mundo"); // Hola Mundo! defaultHello("World"); // Hello World! Bundle.hello("World"); // Hello World! Bundle.helloES("Mundo"); // Hola Mundo! welcome("Human"); // Welcome Human!
Exportation / importation de déclarations
Toute déclaration (variable, const, fonction, classe, etc.) peut être exportée à partir du module à importer dans un autre module.
Typecript offre deux types d'export: nommé et default.
Exportation nommée
// adams.ts export function hello(name: string){ console.log(`Hello ${name}!`); } export const answerToLifeTheUniverseAndEverything = 42; export const unused = 0;
Lors de l'importation d'exportations nommées, vous pouvez spécifier les éléments à importer.
import {hello, answerToLifeTheUniverseAndEverything} from "./adams"; hello(answerToLifeTheUniverseAndEverything); // Hello 42!
Export par défaut
Chaque module peut avoir une exportation par défaut
// dent.ts const defaultValue = 54; export default defaultValue;
qui peuvent être importés en utilisant
import dentValue from "./dent"; console.log(dentValue); // 54
Importation groupée
Typecript propose une méthode pour importer un module entier dans une variable
// adams.ts export function hello(name: string){ console.log(`Hello ${name}!`); } export const answerToLifeTheUniverseAndEverything = 42;
import * as Bundle from "./adams"; Bundle.hello(Bundle.answerToLifeTheUniverseAndEverything); // Hello 42! console.log(Bundle.unused); // 0
Réexporter
Les caractères dactylographiés permettent de réexporter les déclarations.
//Operator.ts
interface Operator {
eval(a: number, b: number): number;
}
export default Operator;
//Add.ts
import Operator from "./Operator";
export class Add implements Operator {
eval(a: number, b: number): number {
return a + b;
}
}
//Mul.ts
import Operator from "./Operator";
export class Mul implements Operator {
eval(a: number, b: number): number {
return a * b;
}
}
Vous pouvez regrouper toutes les opérations dans une seule bibliothèque
//Operators.ts
import {Add} from "./Add";
import {Mul} from "./Mul";
export {Add, Mul};
Les déclarations nommées peuvent être réexportées en utilisant une syntaxe plus courte
//NamedOperators.ts
export {Add} from "./Add";
export {Mul} from "./Mul";
Les exportations par défaut peuvent également être exportées, mais aucune syntaxe courte n'est disponible. N'oubliez pas qu'une seule exportation par défaut par module est possible.
//Calculator.ts
export {Add} from "./Add";
export {Mul} from "./Mul";
import Operator from "./Operator";
export default Operator;
Possible est la réexportation de l' importation groupée
//RepackedCalculator.ts
export * from "./Operators";
Lors de la réexportation d'un ensemble, les déclarations peuvent être remplacées lorsqu'elles sont déclarées explicitement.
//FixedCalculator.ts
export * from "./Calculator"
import Operator from "./Calculator";
export class Add implements Operator {
eval(a: number, b: number): number {
return 42;
}
}
Exemple d'utilisation
//run.ts
import {Add, Mul} from "./FixedCalculator";
const add = new Add();
const mul = new Mul();
console.log(add.eval(1, 1)); // 42
console.log(mul.eval(3, 4)); // 12