• 原文地址:TypeScript — JavaScript with superpowers — Part II
  • 原文作者:Indrek Lasn
  • 译文出自:掘金翻译计划
  • 本文永久链接:github.com/xitu/gold-m…
  • 译者:jonjia
  • 校对者:Usey95 anxsec

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 项目

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

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

你可以关注我的 Twitter。


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

[译] TypeScript:拥有超能力的 JavaScript(下)相关推荐

  1. CCN:拥有雄厚实力的BCH将成为下一轮牛市的催化剂

    本周,海外知名区块链媒体CCN(CryptoCoinsNews)在网站首页发布了一篇题为<拥有雄厚实力的BCH将成为下一轮牛市的催化剂>的文章,文中解释了BCH能成为牛市催化剂的原因得益于 ...

  2. Typescript基础类型以及与Javascript对比

    TypeScript数据类型以及与JavaScript对比 文章目录 TypeScript数据类型以及与JavaScript对比 介绍 一.数据类型与基础数据类型 1.数据类型 2.基础数据类型 3. ...

  3. 超详细Windows环境下使用Apache部署Django项目教程

    目录 超详细Windows环境下使用Apache部署Django项目教程 1.什么是Apache 2.安装并配置Apache 2.1 下载Apache 2.2 解压Apache到文件夹 2.3 配置c ...

  4. 让大脑拥有超级记忆力的30个小习惯

    让大脑拥有超级记忆力的30个小习惯,<海马记忆训练>–读书笔记 1.闭上眼睛吃饭. 阻断视觉,让嗅觉和味觉大显身手. 2.用手指分辨硬币. 通过有意识的指尖训练来提高脑的性能. 3.带上耳 ...

  5. 函数式编程在JavaScript下应用实践

    点击此处阅读原文:函数式编程在JavaScript下应用实践 函数式编程在JavaScript下应用实践 文章目录 函数式编程在JavaScript下应用实践 前言 从一个实际需求说起 一把梭实现 C ...

  6. 黑科技之中文计算机语言,脑洞大开 这些黑科技让你拥有超能力

    脑洞大开,想"长生不老"的各位亲不用再苦等唐僧肉了!科学家说200年内人类可以通过生物科技和遗传工程学技术,将自己打造成半机械人,从而自己控制生死.但是!愿望是美好的,资金是巨额的 ...

  7. 拥有超20万市场主体,雨花区如何打造和谐营商环境?

    随着雨花区红星商圈步步高星城天地进入开业倒计时,一个不输IFS的大型综合商业体即将展现在我们眼前.一旦步步高星城天地顺利开业,就标志着红星商圈开启了以新换旧.打造综合商业体的2.0时代. 红星商圈的转 ...

  8. JavaScript下拉菜单的例子

    原文地址:http://www.cnblogs.com/yes123/p/3944046.html JavaScript下拉菜单的例子分享 css+js下拉菜单 完整代码:  <!DOCTYPE ...

  9. JavaScript下的进制转换

    JavaScript下的进制转换 //十进制转其他进制 var num = 99; console.log('十进制: ', num); console.log('八进制:', (num).toStr ...

最新文章

  1. 把本地mysql备份到服务器innodb_使用mysql备份工具innobackupex将本地数据 直接恢复 到远端服务器数据目录操作实例...
  2. 14级团队学习成果汇报 -- 利用express+socket.io搭建简易版聊天室
  3. 【计算机视觉】跟踪算法及相关主页
  4. CodeForces - 1236D Alice and the Doll(贪心+二分+模拟)
  5. numpy统计分布显示
  6. Initialization failed for ‘https://start.spring.io‘ Please check URL, network and proxy settings.
  7. Exchange 2013 SP1部署系列7:发送连接器的配置
  8. 不能使用泛型的形参创建对象_数据类型之----泛型
  9. tomcat安装并设置开机启动
  10. 音乐播放小程序demo
  11. java 遍历 文件_Java的后台文件夹下文件的遍历完整代码
  12. Java使用DES加密解密
  13. Django 修改时区时间
  14. Javaweb生成族谱树形图
  15. winrar 去广告_winRAR去广告版软件安装教程
  16. 达梦V8使用dmrman恢复数据库
  17. 大数据项目之电商数仓DataX、DataX简介、DataX支持的数据源、DataX架构原理、DataX部署
  18. java数组的时间复杂度_java时间复杂度计算
  19. 论文翻译:双端通话频域回声消除中学习速率的调整
  20. Microsoft Exchange Server 2007: Tony Redmond's Guide to Successful Implementation

热门文章

  1. 服务端转发html页面,html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
  2. python语法详解大全_笔记:Python 语法要点汇总
  3. 计算机排版基础知识,计算机排版基础知识.pdf
  4. 深入分析 Java I/O 的工作机制
  5. php屏幕抓取,关于屏幕抓取:如何在PHP中实现Web scraper?
  6. mysql bypass_Bypass MySQL Safedog
  7. 使用ansible来调度cron作业
  8. markdownpad2 html渲染组件出错_Day68 Django forms组件
  9. mysql 授权是哪一个表_MySQL授权系统的五个表
  10. 土拍熔断意味着什么_半小时3宗地接连熔断 今日长沙土拍关键字:“焱”