Módulos y proyecto
Un archivo con import o export en el nivel superior es un módulo. Sin ninguno de los dos, es un script: su contenido vive en el ámbito global. Para forzar que un archivo sea módulo se agrega export {};.
export const phi = 1.61;
export function absolute(num: number) {
if (num < 0) return num * -1;
return num;
}
import { pi, phi, absolute } from "./maths.js";
import { pi as π } from "./maths.js";
import * as math from "./maths.js";
import "./maths.js";
La exportación por defecto va con export default, y se importa sin llaves:
export default function helloWorld() {}
import helloWorld from "./hello.js";
Tipos entre archivos
Los tipos se exportan igual que los valores:
export type Cat = { breed: string; yearOfBirth: number };
export interface Dog { breeds: string[]; yearOfBirth: number }
Y se pueden importar como solo tipo:
import type { Cat, Dog } from "./animal.js";
import type importa únicamente tipos y no admite valores. Desde TypeScript 4.5 también se puede marcar cada importación por separado:
import { createCatName, type Cat, type Dog } from "./animal.js";
Esto deja claro qué desaparece al compilar y qué sobrevive en el JavaScript emitido.