gpt4 book ai didi

typescript - ES `keyof` 类型的 `Map` 等效于什么?

转载 作者:行者123 更新时间:2023-12-05 02:56:11 25 4
gpt4 key购买 nike

给定一个 TypeScript Map,很容易找出键的类型 - 只需使用 keyof:

// keyof
type MyRec = Record<string, number>;
type MyRecKey = keyof MyRec; // works

对于 Mapkeyof 的等价物是什么? TS 标准库中是否内置了某些内容?

// MapKeyOf ?
type MyMap = Map<string, number>;
type MyMapKey = MapKeyOf<MyMap>; // is there a built-in way to do this?

由于 TypeScript 出色的表现力,这在用户空间中是可以表达的,但我不想复制/粘贴这个或者可能是 type-utils 文件:

更新:这个问题之前有一个更复杂的用户空间定义

type KeyOfMap<M extends Map<unknown, unknown>> = M extends Map<infer K, unknown> ? K : never

this solution is from @TitianCernicova-Dragomir and @kaya3

最佳答案

对此没有内置类型。 TS 团队对添加新的实用程序类型非常保守(Omit 是最后添加的,它并非没有争议)。指南是使用类型实用程序库或使用您自己的,

我建议编写 MapOf 只是一个简单的条件类型,不确定为什么需要更复杂的解决方案:

type KeyOfMap<M extends Map<unknown, unknown>> = M extends Map<infer K, unknown> ? K : never

Playground Link

关于typescript - ES `keyof` 类型的 `Map` 等效于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60737502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com