首页 > 解决方案 > 如何在 Typescript 中枚举接口的所有成员?

问题描述

为了将对象中的属性分成 2 组(在该对象实现的接口中声明的属性以及所有其他属性),我需要一种从接口获取属性名称数组的方法。第一步大概是keyof运营商:

interface MyInterface {
    a: string;
    b: string;
}

function f(i: MyInterface) {
    type props = keyof MyInterface;
}

现在我有一个对象传递给这个函数,例如:

f({ a: "a", b: "b", c: "c"} as MyInterface);

我看到那props"a" | "b",而i包含c作为附加属性。如果我可以将props联合类型转换为字符串数组,那么提取附加属性将是微不足道的,但不知道我该怎么做。

由于将联合类型转换为字符串数组只是查找附加属性的一种方法,因此我也接受任何其他不基于联合类型的方法。

标签: typescript

解决方案


没有“开箱即用”的方法可以做到这一点。但是有一个 npm 包提供了这样的功能:https ://www.npmjs.com/package/ts-transformer-keys


推荐阅读