给定一种类型的Map,例如:
type Foo = Map<string, number>;
有没有办法获得用于key
和value
的类型?
您可以定义这样的条件类型来提取您想要的任何映射的键和值:
type Foo = Map<string, number>;
type MapKey<T> = T extends Map<infer K, any> ? K : never;
type MapValue<T> = T extends Map<any, infer V> ? V : never;
type FooKey = MapKey<Foo>
type FooValue = MapValue<Foo>
// Or if you just need it for the current case:
type FooKey2 = Foo extends Map<infer K, any> ? K : never;
type FooValue2 = Foo extends Map<any, infer V> ? V : never;
一种(可怕的(方式可能是
type Foo = Map<string, number>;
type Key = Parameters<Foo["set"]>[0];
type Value = Parameters<Foo["set"]>[1];