gpt4 book ai didi

typescript - TypeScript 中奇怪的可选类属性

转载 作者:行者123 更新时间:2023-12-04 02:25:47 27 4
gpt4 key购买 nike

突然从今天开始,下面的代码开始出现ts2322错误。
这在 Typescript playground 中运行良好
我找不到任何问题,但有什么问题?
我正在使用 Visual Studio Code 1.56.2

class Klass {
value?: number;

constructor(value?: number) {
this.value = value;
}
}
enter image description here

最佳答案

您还没有提到这一点,但我假设您正在使用 npm 中发布的夜间构建版本 typescript@next .如果是这样,您可能会看到 TypeScript 4.4 的新特性“严格可选属性”的预览,如 microsoft/TypeScript#43947 中实现的那样。 . (更新 2021-06-10)此功能最初将通过新的 --strictOptionalProperties 启用编译器标志,该标志将包含在 --strict suite of compiler options 中.然而,根据this comment ,该标志将被重命名并从 --strict 中删除,因此任何想要在 TypeScript 4.4 及更高版本中看到此行为的人都需要通过一些尚未确定名称的编译器标志手动启用它。
严格的可选属性将阻止您分配 undefined到可选属性,同时仍然允许您阅读 undefined从这样的属性(property)。这更符合人们长期以来希望可选属性的方式,正如(现已最终关闭)问题 microsoft/TypeScript#13195 所证明的那样。 .
无论如何,这意味着将从可选参数读取的值分配给相同类型的可选属性不再安全,而不先检查它是否是 undefined :

class Klass {
value?: number;

constructor(value?: number) {
if (value !== undefined) this.value = value;
}
}
Playground link to code

关于typescript - TypeScript 中奇怪的可选类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67822178/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com