Was ist "Exporttyp" in Typescript?

77

Ich bemerke die folgende Syntax in Typescript.

export type feline = typeof cat;

Soweit ich weiß, typehandelt es sich weder um einen integrierten Basistyp noch um eine Schnittstelle oder Klasse. Eigentlich sieht es eher nach einer Syntax für Aliasing aus, die ich jedoch nicht finden kann, um meine Vermutung zu überprüfen.

Was bedeutet die obige Aussage?

Hackjutsu
quelle

Antworten:

94

Dies ist ein Typalias - er wird verwendet, um einem Typ einen anderen Namen zu geben.

In Ihrem Beispiel felinewird der Typ von was auch catimmer sein.

Hier ist ein umfassenderes Beispiel:

interface Animal {
    legs: number;
}

const cat: Animal = { legs: 4 };

export type feline = typeof cat;

felinewird der Typ sein Animal, und Sie können ihn als Typ verwenden, wo immer Sie möchten.

const someFunc = (cat: feline) => {
    doSomething();
};

exportexportiert es einfach aus der Datei. Es ist das gleiche wie das:

type feline = typeof cat;

export {
    feline
};
James Monger
quelle
Das einfachste Beispiel sind String-Literal-Typen:type Easing = "ease-in" | "ease-out" | "ease-in-out";
Boris Yakubchik
13
Ich kann nicht tief verstehen. Was ist dann der Unterschied zwischen einer Schnittstelle und einem Typ? Wofür wird der Typ hauptsächlich verwendet?
Ashfaque Rifaye
2
@AshfaqueRifaye pawelgrzybek.com/typescript-interface-vs-type
James Monger
Ich bin auch über den Link gegangen, aber immer noch nicht ganz klar.
Kapil Raghuwanshi
@KapilRaghuwanshi Microsoft dachte, jemand könnte verwirrt sein und schrieb einen Absatz über ihren Unterschied . Wie sie sagen, könnte eine Faustregel lauten: "Bevorzugen Sie die Schnittstelle dem Typ, wann immer Sie können".
TechNyquist