gpt4 book ai didi

typescript - 通用记录 key 可能吗?

转载 作者:行者123 更新时间:2023-12-04 15:15:20 24 4
gpt4 key购买 nike

是否可以返回带有通用键的记录?打字允许,但实现似乎不可能。

function foo<K extends string>(key: K): Record<K, string> {
return {
[key]: "foo"
}
}

错误:

Type '{ [x: string]: string; }' is not assignable to type 'Record<K, string>'.(2322)

最佳答案

快速修复是断言您返回的对象是正确的类型。

function foo<K extends string>(key: K): Record<K, string> {
return {
[key]: "foo"
} as Record<K, string>
}

这是必要的原因是因为 typescript 承认类型 K 可以比文字字符串 key (K > 可以是 string 或字符串文字的并集)。如果是这种情况,那么您返回的对象实际上不会满足返回类型,因为它不会为每个键 K 提供值。

目前无法声明泛型必须是单个文字字符串,因此需要对 as 进行一些巧妙处理。

关于typescript - 通用记录 key 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64432981/

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