Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类型脚本构造函数语法_Javascript_Typescript - Fatal编程技术网

Javascript 类型脚本构造函数语法

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中非布尔类型

在Typescript中,有人知道这是什么意思吗

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,这是正确的-我已经更新了示例。