Hur man har en "export default" med flera typer och värden i en TypeScript-modul?
Jag kan enkelt ha en export default med flera värden:
class Car {...}
class Bus {...}
export default { Car, Bus }
Jag kan också enkelt ha en export default av en typ
export default interface Airplane {...}
Men jag kan inte ha en standardexport av flera 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 blandning av flera typer och värden.
class Car {...}
interface Motorcycle {...}
// 'Airplane' only refers to a type, but is being used as a value here. ts(2693)
export default { Car, Airplane }
Hur kan jag uppnå detta?
Svar #1
Överväg export =-syntaxen.
Syntaxen export = anger ett enda objekt som exporteras från modulen. Detta kan vara en klass, ett gränssnitt, ett namnrymd, en funktion eller en uppräkning.
Fordon.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
Faktiskt, genom att exportera på detta sätt:
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 gör är att **exportera ett standardobjekt med två egenskaper**.
Senare, i din kod, kan du importera det så här:
// name is as you like, its default import
import transport from transport;
och använd det så här:
....new transport.Car()
....new transport.Plane()
