TypeScript
Moduler - export och import
Sök…
Hej världsmodul
//hello.ts
export function hello(name: string){
console.log(`Hello ${name}!`);
}
function helloES(name: string){
console.log(`Hola ${name}!`);
}
export {helloES};
export default hello;
Ladda med katalogindex
Om katalogen innehåller fil som heter index.ts kan den laddas med endast index.ts (för index.ts filnamn valfritt).
//welcome/index.ts
export function welcome(name: string){
console.log(`Welcome ${name}!`);
}
Exempel på användning av definierade moduler
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!
Exportera / importera deklarationer
Alla deklarationer (variabel, const, funktion, klass osv.) Kan exporteras från modul för att importeras i annan modul.
Typescript erbjuder två exporttyper: namngivna och standard.
Namngivna export
// adams.ts
export function hello(name: string){
console.log(`Hello ${name}!`);
}
export const answerToLifeTheUniverseAndEverything = 42;
export const unused = 0;
När du importerar namngivna export kan du ange vilka element du vill importera.
import {hello, answerToLifeTheUniverseAndEverything} from "./adams";
hello(answerToLifeTheUniverseAndEverything); // Hello 42!
Standardexport
Varje modul kan ha en standardexport
// dent.ts const defaultValue = 54; export default defaultValue;
som kan importeras med
import dentValue from "./dent"; console.log(dentValue); // 54
Medföljande import
Typescript erbjuder metod för att importera hela modulen till variabel
// 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
Återexport
Typskript gör det möjligt att återexportera deklarationer.
//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;
}
}
Du kan samla alla operationer i ett enda bibliotek
//Operators.ts
import {Add} from "./Add";
import {Mul} from "./Mul";
export {Add, Mul};
Namngivna deklarationer kan exporteras på nytt med kortare syntax
//NamedOperators.ts
export {Add} from "./Add";
export {Mul} from "./Mul";
Standardexport kan också exporteras, men ingen kort syntax är tillgänglig. Kom ihåg att bara en standardexport per modul är möjlig.
//Calculator.ts
export {Add} from "./Add";
export {Mul} from "./Mul";
import Operator from "./Operator";
export default Operator;
Möjligt är återexport av buntad import
//RepackedCalculator.ts
export * from "./Operators";
Vid återexport av paket kan deklarationer åsidosättas när de uttryckligen deklareras.
//FixedCalculator.ts
export * from "./Calculator"
import Operator from "./Calculator";
export class Add implements Operator {
eval(a: number, b: number): number {
return 42;
}
}
Exempel på användning
//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