什么是Typescript中的`export type`?

hac*_*tsu 49 javascript typescript

我在Typescript中注意到以下语法.

export type feline = typeof cat;
Run Code Online (Sandbox Code Playgroud)

据我所知,type不是内置的基本类型,也不是接口或类.实际上它看起来更像是别名的语法,然而我无法找到参考来验证我的猜测.

那么上述陈述意味着什么呢?

Jam*_*ger 71

这是一个类型别名 - 它用于为类型指定另一个名称.

在你的例子中,feline将是什么类型cat.

这是一个更完整的例子:

interface Animal {
    legs: number;
}

const cat: Animal = { legs: 4 };

export type feline = typeof cat;
Run Code Online (Sandbox Code Playgroud)

feline将是类型Animal,您可以在任何您喜欢的地方使用它.

const someFunc = (cat: feline) => {
    doSomething();
};
Run Code Online (Sandbox Code Playgroud)

export只需从文件中导出它.这与做到这一点是一样的:

type feline = typeof cat;

export {
    feline
};
Run Code Online (Sandbox Code Playgroud)

  • 我无法深入了解。那么接口和类型有什么区别呢?类型主要用于什么? (21认同)
  • @AshfaqueRifaye https://pawelgrzybek.com/typescript-interface-vs-type/ (4认同)
  • 最简单的例子是字符串文字类型:`type Easing = "ease-in" | “缓出” | “缓出”;` (3认同)
  • @KapilRaghuwanshi 微软认为有人可能感到困惑,并写了一段[关于他们的差异的段落](https://www.typescriptlang.org/docs/handbook/advanced-types.html#interfaces-vs-type-aliases)。正如他们所说,经验法则可能是“尽可能选择接口而不是类型”。 (2认同)
  • https://blog.logrocket.com/types-vs-interfaces-in-typescript/ 也试试这个 (2认同)