Hvordan ha en "export default" med flere typer og verdier i en TypeScript-modul?
Jeg kan enkelt ha en eksport standard med flere verdier:
class Car {...}
class Bus {...}
export default { Car, Bus }
Jeg kan også enkelt ha en standardeksport av en type
export default interface Airplane {...}
Men jeg kan ikke ha en standardeksport av flere typer
interface Airplane {...}
interface Motorcycle {...}
// 'Airplane' only refers to a type, but is being used as a value here. ts(2693)
export default { Airplane, Motorcycle }
Eller av en blanding av flere typer og verdier.
class Car {...}
interface Motorcycle {...}
// 'Airplane' only refers to a type, but is being used as a value here. ts(2693)
export default { Car, Airplane }
Hvordan kan jeg oppnå dette?
Svar #1
Vurder export =-syntaks.
Syntaksen export = angir et enkelt objekt som eksporteres fra modulen. Dette kan være en klasse, grensesnitt, navneområde, funksjon eller enum.
Kjøretøy.ts
namespace Vehicle {
export class Car {
// ...
}
export class Bus {
// ...
}
}
export = Vehicle;
Test1.ts
import Vehicle from './Vehicle';
const car = new Vehicle.Car();
const bus = new Vehicle.Bus();
Test2.ts
import { Bus, Car } from './Vehicle';
const car = new Car();
const bus = new Bus();
Se https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require
Svar #2
Faktisk, ved å eksportere slik:
class Car {...}
interface Motorcycle {...}
// 'Airplane' only refers to a type, but is being used as a value here. ts(2693)
export default { Car, Airplane }
Det du gjør, er å **eksportere et standardobjekt med to egenskaper**.
Senere, i koden din, kan du importere den slik:
// name is as you like, its default import
import transport from transport;
og bruk det slik:
....new transport.Car()
....new transport.Plane()
