我有界面
interface MyInterface {
field1: boolean,
field2: MyType,
field3: MyType
}
,并且我想创建一个包含此接口键的类型,但仅包含那些在接口中使用的键具有MyType类型值的类型。我知道keyof
的存在,但是它将返回所有不需要的键,甚至field1
。那么如何只用field2
和field3
键入文字呢?
答案 0 :(得分:1)
您可以创建映射类型,以检查值是否扩展了MyType
,如果是,则获取键,否则放置never
,然后使用所有可能的键对其进行索引(以生成键的并集,以表示其值扩展MyType
):
type PickKeysOfType<T, TValue> = {
[P in keyof T]: T[P] extends TValue ? P : never
}[keyof T];
type MyTypeKeys = PickKeysOfType<MyInterface, MyType> // "field2" | "field3"