Javascript 类型脚本构造函数语法
在Typescript中,有人知道这是什么意思吗Javascript 类型脚本构造函数语法,javascript,typescript,Javascript,Typescript,在Typescript中,有人知道这是什么意思吗 constructor(obj?:any){ this.id = obj && obj.id || null; } 以下是我的猜测: 如果(obj不为null)和(obj.id有值),则将obj.id赋值,否则,将null赋值给这个.id 我找了大约15-20个地方(站点/文档),但仍然找不到答案。很抱歉,我刚刚开始学习打字。有人知道什么好的推荐信吗?提前感谢您的帮助 你的直觉很好!总结如下:JavaScript中非布尔类型
constructor(obj?:any){
this.id = obj && obj.id || null;
}
以下是我的猜测:
如果(obj不为null)和(obj.id有值),则将obj.id赋值,否则,将null赋值给这个.id
我找了大约15-20个地方(站点/文档),但仍然找不到答案。很抱歉,我刚刚开始学习打字。有人知道什么好的推荐信吗?提前感谢您的帮助 你的直觉很好!总结如下:JavaScript中非布尔类型上的
if、&&、| |
等运算符会导致这些类型被计算为布尔类型。最常见的是,这有助于确定某个对象是null
(false)还是对象(true)
请注意,truthyValue&&obj
将为您提供obj
,而不是true
,因此语法对于空合并非常有用。例如:name=mightBeNull&&mightBeNull.name
编写此构造函数的更详细的方法是:
if (obj) {
this.id = obj.id;
}
else {
this.id = null;
}
这在某种程度上是一个代码风格的问题——其目的当然不太清楚,但当您是许多经验丰富的JavaScript程序员中的一员时,可能会倾向于使用人们习惯的模式编写简短的代码,而不是完全自文档化的常规模式
(最后,请注意,上述解释同样适用于JavaScript和TypeScript)次要问题:更详细的方法应该包括检查
obj.id
。要查看,请使用obj={id:undefined}
比较原始代码和此详细代码。在原始版本中,它将是null
,在本版本中,它将是未定义的
。或者检查obj={id:false}
。。。原来是null
,这个是false
。我理解你的意思。但是null&&obj
将始终为您提供null
@Dave,这是正确的-我已经更新了示例。