问答

typescript null/undefined值被推断为什么类型?

作者:admin 2021-06-14 我要评论

环境: VS Code Version: 1.47.3tsc Version: 4.0.0-dev.20200727tsconfig.js: "strict": true, code: let x = null; // x 是 any typelet y = x; // x 是 null t...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

环境:

VS Code Version: 1.47.3
tsc Version: 4.0.0-dev.20200727
tsconfig.js: "strict": true,

code:

let x = null; // x 是 any type
let y = x; // x 是 null type(x 在上面是 any type呀?), y 是 null type

x = 1; // x 是 any type
y = 1; // error, y 是 null type

x 到底是什么类型?

###

其实 Typescript 中的 any 分为 显式声明隐式推导。开启了 --noImplicitAny 后,当没法推测出变量类型时,Typescript 不再隐式地将变量直接标记为 any ,而是使用了一种改进型的 any 来标记。即:

如果一个变量没有指明类型,且声明时没有初始化或是使用 null 或 undefined 初始化,则这个变量会被标记为 改进型 any 类型,会根据最终的赋值来动态推导其真正的类型

参见官方说明: https://www.typescriptlang.or...

DEMO

###

TypeScript 规则 nullundefined 是所有类型的子类型,这就是为什么 let x = null;xany 类型。

TypeScript 的类型推论有一个很重要的点就是上下文关联,这是实时性的,虽然 xany 类型,但是基于上下文的确认,x 就是一个 null 类型,这就是为什么 y 会是 null 类型的原因。

建议当初始值是 nullundefined 务必指定具体的类型,例如:let x: number | number = null;
###

typeof null === 'object'

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • typescript null/undefined值被推断为

    typescript null/undefined值被推断为

  • jquery绑定逻辑与事件执行

    jquery绑定逻辑与事件执行

  • 用nginx在同一服务器端口下部署多个项

    用nginx在同一服务器端口下部署多个项

  • react+antd的写的组件打包后太大怎么办

    react+antd的写的组件打包后太大怎么办

腾讯云代理商
海外云服务器