- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
突然从今天开始,下面的代码开始出现ts2322错误。
这在 Typescript playground 中运行良好
我找不到任何问题,但有什么问题?
我正在使用 Visual Studio Code 1.56.2
class Klass {
value?: number;
constructor(value?: number) {
this.value = value;
}
}
最佳答案
您还没有提到这一点,但我假设您正在使用 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/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!