Null与Undefined的类型推断问题万分感谢

letx=1
letz='2'
x=z//错误
上面的报错是因为x被推断为number,而z被推断为string,所以赋值失败但是为什么下列代码能赋值成功?
letx=null
x=1
为什么下列代码赋值失败?
letb:null=null
b=1//错误
同样的情况undefined也有。
这是因为typescript编译器把undefined和null都推断成any类型了吗?
森栏
浏览 269回答 2
2回答

不负相思意

letx=undefined等价于letx,这时候x类型为any,所以x可以被赋值为任何类型。letb:undefined=undefined强制申明b的类型为undefined,所以不能为number。undefined和null为不同类型,并不等价。

DIEA

可以看一下MDN上对undefined和null的解释,undefined的含义是“未赋值”,null的含义是“空对象”,平时我们设varx;相当于varx=undefined;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript