ES"Map"类型的"T[keyofT]"等价物是什么



给定一个对象,在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

相关内容

  • 没有找到相关文章

最新更新