给定一个对象,在TypeScript中,只需使用T[keyof T]
:就可以很容易地确定值的类型
type MyRec = Record<string, number>;
type MyRecValue = MyRec[keyof MyRec]; // number
T[keyof T]
与Map
的等价物是什么?TS标准库中有内置的内容吗?
您可以检查.get
的返回类型,查看它返回的类型并获取值。您还可以检查.get
接受的参数类型以获取密钥。
const m = new Map<number, string>();
type M = typeof m;
type Key = Parameters<M["get"]>[0]; // number
type Value = ReturnType<M["get"]; // string | undefined
没有内置类型。您需要编写自己的助手:
type ValueOfMap<M extends Map<unknown, unknown>> = M extends Map<unknown, infer V> ? V : never
现在它将工作:
type MyMap = Map<string, number>;
type MyMapValue = ValueOfMap<MyMap>; // number
感谢这个答案帮我弄明白:https://stackoverflow.com/a/60737746/2697506