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()

Relaterade artiklar