根据题目,我们需要使用 TypeScript 3.8.0-dev.20200204 版本,并解决以下问题:
TS2536
generic typing
keyof
代码如下:
type Fruit = 'apple' | 'banana' | 'orange';
const fruits: Fruit[] = ['apple', 'banana'];
function getFruitName<T extends Fruit>(fruits: T[], index: number): string {
return fruits[index as keyof T];
}
console.log(getFruitName(fruits, 1)); // 输出 "banana"
预期行为:只要使用了正确的键,就不会引发错误。
实际行为:编译时会抛出 TS2536 错误,尽管由于泛型类型,我们应该知道这些键。
1条答案
按热度按时间5vf7fwbs1#
我认为这可能是属性查找被推迟的设计限制,但无论如何,你可以这样写:
或者