TypeScript中可选链
TypeScript中可选链
什么是可选链
TypeScript 3.7中一个最引人关注的特性便是可选链(Optional Chaining)。
所谓可选链,就是当我们试图使用访问对象的字段或者方法时,如果对象为null
或者undefined
,TypeScript将会自动停止运行的代码,以防止空指针异常。
可选链的使用
首先定义一个接口 A, 有一个字段b,b可能是字符串,也可能是null:
1 | interface A { |
定义一个变量a:
1 | const a = { |
使用?.
来访问字段:
1 | console.log(a?.b) |
如果a为null
或者undefined
, 将输出undefined
TypeScript做了什么
可选链并不是ts的专利,在js就已经存在了,除了ie,其他现代浏览器最新版本都是支持了,但是一些老版本就不支持,因此ts没有使用js的语法,而是通过三元表达式? :
转译。因此上面的代码将会转译成:
1 | console.log(a === null || a === void 0 ? void 0 : a.b); |
但是ts没有判断a是否是undefined
, 而是因为在js中, undefined
不仅是值,也可能是一个全局变量。直到es5之前,undefined
是可以被修改的。我们可以通过下面的代码来修改:
1 | (function() { |
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Damingerdai's Blog!