【问题标题】:TypeScript constructor syntax [duplicate]TypeScript 构造函数语法 [重复]
【发布时间】:2016-07-08 13:00:04
【问题描述】:

在 Typescript 中,有谁知道这是什么意思?

constructor(obj?:any){
  this.id = obj && obj.id || null;
}

这是我的猜测:

好像if (obj is not null) and (obj.id has value),然后赋值obj.id,否则,赋值null给this.id??

我查找了大约 15-20 个地方(站点/文档),但仍然找不到答案。很抱歉我刚开始学习 TypeScript。有人知道有什么好的参考吗?提前感谢您的帮助!

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    你的直觉很好!总结如下: JavaScript 中非布尔类型上的 if, &&, and || 等运算符会导致这些类型被评估为布尔值。最常见的是,这用于帮助确定某事物是 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,而在这个版本中它将是undefined。或者查看obj = {id: false}...原来是null和这个false
    • 我理解你想要表达的意思。但是null && obj 会一直给你null
    • @Dave 没错——我已经更新了示例。
    猜你喜欢
    • 2015-12-01
    • 2014-07-05
    • 2019-04-14
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2012-09-24
    相关资源
    最近更新 更多