TypeScript - null与undefined

ser*_*0ne 7 typescript

打字稿编码指南状态

使用undefined.不要使用null

刚刚阅读了另一篇关于ECMAScript的文章,该文章提倡null而不是undefined,我想知道微软或TypeScript团队的理由是否为这个决定所知?

Est*_*ask 10

指南不需要任何基本原理,可以随意选择要求以保持代码库的一致性.

对于此准则,undefined需要输入更多字符,但不需要将其显式分配给可空变量或属性:

class Foo {
  bar: number|undefined;
}

function foo(bar: number|undefined) {}
Run Code Online (Sandbox Code Playgroud)

class Foo {
  bar: number|null = null;
}

function foo(bar: number|null = null) {}
Run Code Online (Sandbox Code Playgroud)

此外,null在运行时检查值的类型不太方便,因为typeof val === 'object'对于两者null和对象值,它都是typeof val === 'undefined'为了undefined.

有相关的TSLint规则解决了这个问题,no-null-keyword.


The*_*ult 5

几个月前我做了一些研究,结果发现必须使用 tslint 规则“no-null-keyword”优先考虑未定义的内容。

我尝试更改我的代码库,但遇到了一些问题。为什么?因为我使用的 API 对于空字段返回 null。

由于 tslint 三等号规则,我陷入了困境。

if (returnedData === undefined) // will be false because returnedData is null

这让你有两个选择:

1) 在三等规则中添加一些参数。

"triple-equals": [true, "allow-null-check"] 并执行If (returnedData == null)

允许空检查允许“==”为空

2) 使用If (returnedData)代替,但它检查是否为 null/未定义/空字符串或零