我想创建一个helper类型来推断索引访问类型中使用的键。
示例:
type X = { foo: string, bar: boolean }
type Fn = <T extends X>(value: T) => T["foo"]
type Helper<T> = ???
type Result = Helper<Fn> // should be "foo"
我尝试的方法类似于内置的ReturnType
helper,但到目前为止还不起作用:
type Helper<Fn> = Fn extends (value: infer T) => infer R
// R extends T[infer Key] does not work: Type 'Key' cannot be used to index type 'T'.
? R extends T[keyof T]
? T[keyof T]
: never
: never
这可能吗?
1条答案
按热度按时间kiz8lqtg1#
使用Map类型可以实现相当接近的效果,但这需要事先知道
T
是什么:但是,一个主要缺点是,如果
X
具有多个相同类型的密钥,则结果将包括所有这些键:
Playground