【问题标题】:Get available properties of interface without initializing无需初始化即可获取接口的可用属性
【发布时间】:2020-05-14 03:27:09
【问题描述】:

我正在尝试创建一个通用的“映射”方法,该方法可以采用接口和 JSON 响应,然后将可用键映射到接口。我遇到的问题是似乎没有办法在不初始化接口的情况下获取接口的可用属性。

有没有办法在不定义接口的情况下获取接口的值?

【问题讨论】:

标签: javascript typescript interface


【解决方案1】:

接口和其他类型信息(有例外)在运行时不可用。

但是,您可以定义将 JSON 字符串反序列化为给定类型的方法。 const myThing: IThing = JSON.parse(myJsonString); 会将其转换为 IThing 类型。

如果您有一个实现 IThing 的类 Thing,则可以使用 Object.keys 迭代实例化 Thing 的键,并将键索引匹配在一起,例如 thing[key] = JSON.parse(...)[key]

【讨论】:

    【解决方案2】:

    interfacetypes 在 typescript 中仅在 编译 时检查(从 ts 到 js)。所以,在运行时(运行js),没有关于接口的信息。

    但是您可以使用classreflect-metadatadecorators 来实现这一点,就像class-transformer 一样。

    【讨论】:

      【解决方案3】:

      只需将我的接口切换到一个类就是解决方案。然后我可以创建一个空白实例并列出所有可用的属性。

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 2011-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-06
        • 2014-09-20
        • 2018-05-25
        • 1970-01-01
        相关资源
        最近更新 更多