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;
您可以组合标量类型(string
、number
等),也可以组合文字值类型,例如 1
或 'mystring'
。您甚至可以组合其他用户定义类型的类型。例如 madness
类型包含 random
和 color
类型。
然后,当我们尝试将字符串文字设为我们的(并且我们的 IDE 中有 IntelliSense)时,它会显示建议:
它显示了所有的颜色,哪种类型的疯狂源于具有类型颜色,“随机”源于类型随机,最后是字符串'foo'
,它位于疯狂类型本身。
【讨论】:
用户定义类型和枚举有什么区别 @ORcoder 好问题!我也想知道。一个很好的解释让我们理解! 你在哪里声明了type color = "blue" | "red" | "yellow" | "purple";
类内部或外部的语句?
This might help 关于用户定义类型和枚举的区别以上是关于TypeScript 中的“类型”保留字是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Flow 中星号 (*) 类型的用途是啥,TypeScript 中的等价物是啥?