TypeScript 中的“类型”保留字是啥?

Posted

技术标签:

【中文标题】TypeScript 中的“类型”保留字是啥?【英文标题】:What is the "type" reserved word in TypeScript?TypeScript 中的“类型”保留字是什么? 【发布时间】:2015-09-30 14:45:42 【问题描述】:

当我试图在 TypeScript 中创建一个接口时,我注意到“type”要么是关键字,要么是保留字。例如,在创建以下界面时,“type”在带有 TypeScript 1.4 的 Visual Studio 2013 中显示为蓝色:

interface IExampleInterface 
    type: string;

假设您尝试在一个类中实现接口,如下所示:

class ExampleClass implements IExampleInterface 
    public type: string;

    constructor() 
        this.type = "Example";
    

在类的第一行,当您键入(抱歉)单词“type”以实现接口所需的属性时,IntelliSense 会出现“type”,其图标与“typeof”等其他关键字相同或“新”。

我环顾四周,可以找到GitHub issue,它在 TypeScript 中将“type”列为“严格模式保留字”,但我没有找到任何关于其实际用途的更多信息。

我怀疑我在放屁,这很明显我应该已经知道了,但是 TypeScript 中的“类型”保留字是干什么用的?

【问题讨论】:

Type Alias 给你的类型一个语义名称:basarat.gitbooks.io/typescript/content/docs/types/… 【参考方案1】:

它用于“类型别名”。例如:

type StringOrNumber = string | number;
type DictionaryOfStringAndPerson = Dictionary<string, Person>;

参考:(编辑:删除过时的链接) TypeScript Specification v1.5(第 3.9 节,“类型别名”,第 46 和 47 页)

更新(编辑:删除过时的链接)现在在 1.8 规范的第 3.10 节。感谢@RandallFlagg 提供更新的规范和链接

更新(编辑:已弃用的链接)TypeScript Handbook,搜索“类型别名”可以转到相应部分。

更新:现在是here in the TypeScript Handbook。

【讨论】:

是的,这很明显。当你在编程语言的上下文中搜索“type”这个词时,很难找到你要找的东西——尤其是当所讨论的语言被称为“TypeScript”时。顺便说一句,TypeScript 中仍然不存在通用字典对吧? Here's one 如果您需要它(适用于 TS 0.9 及更高版本): 谢谢,我想我以前在想要一本字典的时候看过那个项目,但最后我决定不用了。 这个概念来自 c 中的 typedef a check this studytonight.com/c/typedef.php 前两个链接坏了。请更新,谢谢:)【参考方案2】:

在打字稿中键入关键字:

在 typescript 中,type 关键字定义了一个类型的别名。我们还可以使用 type 关键字来定义用户定义的类型。这最好通过一个例子来解释:

type Age = number | string;    // pipe means number OR string
type color = "blue" | "red" | "yellow" | "purple";
type random = 1 | 2 | 'random' | boolean;

// random and color refer to user defined types, so type madness can contain anything which
// within these types + the number value 3 and string value 'foo'
type madness = random | 3 | 'foo' | color;  

type error = Error | null;
type callBack = (err: error, res: color) => random;

您可以组合标量类型(stringnumber 等),也可以组合文字值类型,例如 1'mystring'。您甚至可以组合其他用户定义类型的类型。例如 madness 类型包含 randomcolor 类型。

然后,当我们尝试将字符串文字设为我们的(并且我们的 IDE 中有 IntelliSense)时,它会显示建议:

它显示了所有的颜色,哪种类型的疯狂源于具有类型颜色,“随机”源于类型随机,最后是字符串'foo',它位于疯狂类型本身。

【讨论】:

用户定义类型和枚举有什么区别 @ORcoder 好问题!我也想知道。一个很好的解释让我们理解! 你在哪里声明了type color = "blue" | "red" | "yellow" | "purple"; 类内部或外部的语句? This might help 关于用户定义类型和枚举的区别

以上是关于TypeScript 中的“类型”保留字是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Flow 中星号 (*) 类型的用途是啥,TypeScript 中的等价物是啥?

Typescript 中的类中扩展的类型是啥?

python中自定义函数的保留字是

Typescript中的“通用类型'Feature<T>'需要1个类型参数”是啥意思?

高分求SQL的全部保留字是哪些?

从 Typescript 中的 union 引用 Complex 类型