我有一个来自另一个软件包的给定接口,所以我不能真正更改它。为了简单起见,我们只说以下界面:
interface SomeInterface {
someProp: string;
someOtherProp?: number;
}
我想知道能否以某种方式提取所有属性的类型,以便获得一种可以是原始Interface的任何属性的组合类型。
在示例中,它将解析为string | number | undefined
类型。
另外,问题并不完全相同,但与此相关。是否有可能提取允许的属性名称而不是值,所以在给出的示例中,它将是一个持有值"someProp" | "someOtherProp"
的类型。
对于第一种情况,我已经尝试过SomeInterface[string]
类型,但是我认为仅当接口定义了键/索引签名而不是特定属性时,该方法才有效。
答案 0 :(得分:2)
通过keyof
获取Mapped type的所有可能的键
type Keys = keyof SomeInterface;
通过indexed access operator获取所有可能的Mapped类型值
type Values = SomeInterface[keyof SomeInterface];