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


104

我只是在尝试在TypeScript中创建接口时注意到“ 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”或“ new”)具有相同的图标”。

我环顾四周,可以找到此GitHub问题,在TypeScript中将“类型”列为“严格模式保留字”,但我没有找到有关其用途的进一步信息。

我怀疑我正在放屁,这是我应该已经知道的显而易见的事情,但是TypeScript中的“类型”保留字是什么呢?


Type Alias:给你的类型的语义名basarat.gitbooks.io/typescript/content/docs/types/...
basarat

Answers:


128

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

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

参考:TypeScript规范v1.5(第3.9节,“类型别名”,第46和47页)

更新现在在1.8规范的3.10节中。感谢@RandallFlagg提供更新的规格和链接

更新TypeScript手册,搜索“类型别名”可以将您带到相应的部分。


24
是的,这很明显。事实证明,在编程语言的上下文中搜索“类型”一词时,很难找到要查找的内容,尤其是当所涉及的语言称为“ TypeScript”时。顺便说一句,TypeScript中仍然不存在通用词典,对吗?
亚当·古德温

1
如果您需要它,这里是一个(对于TS 0.9及更高版本):
Jcl

谢谢,我想我以前想要字典时曾见过那个项目,但最后我决定不这样做。
亚当·古德温

这个概念来自加州的
Pranoy Sarkar,

31

在打字稿中输入关键字:

在打字稿中,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'。您甚至可以组成其他用户定义类型的类型。例如,type madness具有类型random并且color在其中。

然后,当我们尝试创建字符串文字时(我们的IDE中包含IntelliSense),它会显示建议:

在此处输入图片说明

它显示了所有颜色,疯狂类型是从具有颜色的类型派生出来的,“随机”是从随机类型得到的,最后'foo'是疯狂类型本身上的字符串。


用户定义的类型和枚举之间有什么区别
ORcoder

1
@ORcoder好问题!我也想知道 一个很好的解释,让我们理解!
Merv

type color = "blue" | "red" | "yellow" | "purple";在类内部还是外部声明了语句?
Lalit Kushwah,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.