今天看啥  ›  专栏  ›  jonjia

[译] TypeScript:拥有超能力的 JavaScript(下)

jonjia  · 掘金  ·  · 2018-03-22 10:44

[译] TypeScript:拥有超能力的 JavaScript(下)

TypeScript:拥有超能力的 JavaScript(下)

欢迎回来,继前文 [译] TypeScript:拥有超能力的 JavaScript (上) 之后,本周带来下篇。

使用枚举(enum)可以更清晰地组合一组数据。

下面我们来看看如何构造一个枚举类型:

你可以通过下面的方法从枚举中取值:

但这样返回的是这个值的整数索引,和数组一样,枚举类型的索引也是从 0 开始的。

那我们怎么获取到 "Indrek" 呢?

注意看我们怎么获取到字符串的值。

还有一个很好的例子是使用枚举存储应用的状态。

如果你想了解更多关于枚举(enum)的知识,stackoverflow 上的这个回答 探讨了更多关于枚举的细节。


假设我们请求某个 API,获取了一些数据。我们总是期望成功获取数据 — 但如果我们无法获取到数据会怎样呢?

是时候返回 never 类型了,比如下面这种特殊使用场景:

注意我们传递的 message 参数

我们可以在另外的方法中调用 error 方法(回调)

因为我们推断返回值的类型是 never,所以我们声明返回值的类型为 never,而不是 void


  • null — 没有任何值。
  • undefined — 变量被声明了,但没有赋值。

它们本身的类型用处不是很大。

默认情况下 nullundefined 是所有类型的子类型。就是说你可以把 nullundefined 赋值给 number 类型的变量。

图片来自 stackoverflow

关于 nullundefined,Axel Rauschmayer 博士写过 一篇非常棒的文章


类型断言通常会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。

它在运行时没有影响,只会在编译阶段起作用。TypeScript 会假设你 — 程序员,已经进行了必要的检查。

下面是一个简单示例:

尖括号 <> 语法与 JSX 用法冲突,所以我们只能使用 as 语法进行断言。

关于类型断言的更多内容

一些更酷的东西

现在 — 用 TypeScript 来构造些有趣的东西吧!📙

感谢阅读,希望你有所收获!

你可以关注我的 Twitter


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏




原文地址:访问原文地址
快照地址: 访问文章快照