Modules (export/import)
Jusqu'à maintenant, nous avons mis l'entièreté du code dans un fichier main.ts. Il serait plus élégant de déplacer les détails relatifs à la classe Position
dans son propre fichier position.ts
position.ts
class Position {
constructor(private x: number, private y: number, private z: number) { }
equals(position: Position): boolean {
return this.x == position.x && this.y == position.y && this.z == position.z;
}
}
main.ts
let p1 = new Position(2, 2, 1);
let p2 = new Position(3, 3, 1);
console.log(p1.equals(p2)); // false
Si vous essayez de compiler votre fichier main, vous aurez une erreur comme quoi Cannot find name 'Position'
Premièrement, il faut rendre disponible Position
pour être utilisé à l'extérieur de son fichier, c'est-à-dire qu'il faut rendre la classe exportable.
position.ts
export class Position {
constructor(private x: number, private y: number, private z: number) { }
equals(position: Position): boolean {
return this.x == position.x && this.y == position.y && this.z == position.z;
}
}
Ensuite, dans main.ts
, il faut importer la référence à Position
main.ts
import { Position } from "./position";
let p1 = new Position(2, 2, 1);
let p2 = new Position(3, 3, 1);
console.log(p1.equals(p2)); // false
remarque
À noter que dans le chemin vers le fichier, on exclut la portion .ts
. De plus, il est possible de définir plusieurs éléments entre les accolades, dans le cas où le fichier position.ts
exporterait plusieurs définitions.