首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeScript -空与未定义

TypeScript -空与未定义
EN

Stack Overflow用户
提问于 2018-04-10 06:28:00
回答 3查看 7.1K关注 0票数 13

TypeScript编码指南状态

使用未定义的。不要使用null

我刚刚读了另一个关于ECMAScript的文章,它提倡null而不是未定义,我想知道微软或TypeScript团队的理论基础是这个决定吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-10 06:49:26

指导原则不需要任何理由,为了保持代码库的一致性,可以随意选择需求。

对于这个准则,undefined需要更多的字符来输入,但不需要显式地分配给可空变量或属性:

代码语言:javascript
运行
复制
class Foo {
  bar: number|undefined;
}

function foo(bar: number|undefined) {}

代码语言:javascript
运行
复制
class Foo {
  bar: number|null = null;
}

function foo(bar: number|null = null) {}

而且,在运行时检查null值的类型也不太方便,因为typeof val === 'object'用于null和对象值,而对于undefined则是typeof val === 'undefined'

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

票数 16
EN

Stack Overflow用户

发布于 2018-04-10 08:29:59

几个月前,我做了一些研究,我得出了这样一个事实:未定义的必须使用tslint规则“no-null-关键字”来确定优先级。

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

我挣扎是因为tslint的三等号规则。

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

这让你有两个选择:

1)向您的三等号规则中添加一些参数。

“三重等于”:true,“允许-空-检查”并执行If (returnedData == null)

允许-空-检查允许"==“是否为空。

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

票数 4
EN

Stack Overflow用户

发布于 2018-04-10 07:08:24

为什么在未定义的情况下使用null?

在javascripts中,对象是动态的,没有任何类型信息。为此:

代码语言:javascript
运行
复制
var person
person.namme

可能是拼写错误,也可能是name属性。如果使用未定义为null,则在调试时不知道以下情况:

  • 变量/属性尚未初始化,或
  • 您没有输入属性名。

因此,与未定义的null相比,null更可取,因此您可以在以下几个方面进行延迟:

  • 忘记初始化属性和
  • 用错了财产。

话虽如此:打字本是打字的。因此,以下代码:

代码语言:javascript
运行
复制
var person
person.namme

在编译时会导致类型错误。因此,不再需要这种意义上的null。

尽管如此,我仍然倾向于null而不是未定义的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49746803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档