【发布时间】:2020-11-15 04:56:01
【问题描述】:
我有一个接受对象键的函数,有没有办法将键的类型缩小到只有string
function foo<R, K extends keyof R>(obj: R, key: K, array: string[]) {
array.push(key); // Error????: Type 'string | number | symbol' is not assignable to type 'string'.
// omit implementation details...
return obj[key];
}
所以 TS 编译器说 'keyof R' 不能分配给类型 'string' 因为它可以是 'string |号码 |象征' 。我想知道是否有办法将其类型缩小到仅string,以便我们可以从中排除number 和symbol。
我试过了,但语法上似乎错误
function foo<R, K extends Extract(keyof R, string)>(obj: R, key: K, array: string[]) {
array.push(key);
// omit implementation details...
return obj[key];
}
【问题讨论】:
标签: typescript