【问题标题】:How can I get all the properties in Typescript Class with Optional properties如何使用可选属性获取 Typescript 类中的所有属性
【发布时间】:2021-01-20 12:49:41
【问题描述】:

假设我有

class MyType {
  property1?: string,
  property2?: string
}

其中所有属性都是可选的。

如何获得一组属性名称,例如:

["property1", "property2"]

我试过了

console.log(Object.keys(new MyType()))

这将返回一个空数组,因为所有属性都是可选的。

【问题讨论】:

  • 如果你想要一个运行时值,比如上面的数组,它包含所有可选的属性键,你就不走运了。可选性是类型系统的一部分,并且被完全删除。

标签: typescript typescript-generics


【解决方案1】:

转译后,TS 编译器将清除可选属性。见TypeScript Playground

TS:

class MyType {
  property1?: string
  property2?: string
}

console.log(Object.keys(new MyType()))

转译的 JS:

"use strict";
class MyType {
}
console.log(Object.keys(new MyType()));

这就是你得到一个空数组的原因。

【讨论】:

    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 2020-04-20
    • 2022-08-11
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多