如何在typescript中获取键的类型和Map类型定义的值



给定一种类型的Map,例如:

type Foo = Map<string, number>;

有没有办法获得用于keyvalue的类型?

您可以定义这样的条件类型来提取您想要的任何映射的键和值:

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];

最新更新