网站搜索

javascript - 在不初始化的情况下获取接口的可用属性


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

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

答案#1

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

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

如果你有一个实现了 IThing 接口的 Thing 类,你可以使用 Object.keys 来遍历实例化的 Thing 的键,并将键索引匹配在一起,比如 thing[key]=JSON.parse(...)[key]

答案#2

TypeScript 中的 interface 和 types 仅在 编译(从 ts 到 js)时进行检查。因此,在运行时(运行 js 时),接口的信息是不存在的。

但是你可以通过使用 class、reflect-metadata 和 decorators 来实现这一点,就像 class-transformer 所做的那样。