为什么typescript可选类属性设置为未定义的es2022

a5g8bdjr  于 2023-11-20  发布在  TypeScript
关注(0)|答案(1)|浏览(156)

Typescript编译器对可选类属性的处理似乎从es2021更改为es2022

  1. class A {
  2. a?: string
  3. b?: string
  4. constructor() {
  5. this.b = 'asd'
  6. }
  7. }
  8. console.log(new A())

字符串
如果tsconfig target= es2021

  1. A: {
  2. "b": "asd"
  3. }


如果tsconfig target= es2022

  1. A: {
  2. "a": undefined,
  3. "b": "asd"
  4. }


我找不到任何有关此更改的文档。这真的是预期行为吗?为什么?
通过更改TS Config->Target,可以轻松在ts playground中重现

krcsximq

krcsximq1#

其区别是useDefineForClassFields
此标志用于迁移到即将到来的类字段标准版本的一部分。TypeScript在TC39中批准之前多年就引入了类字段。即将到来的规范的最新版本具有与TypeScript实现不同的运行时行为,但语法相同。
此标志切换到即将到来的ECMA运行时行为。
TS文档

相关问题