【发布时间】:2020-04-27 17:24:56
【问题描述】:
keyof 应用于空对象时,我很困惑。示例代码:
const o = {};
const k : Array<keyof typeof o> = [];
// k has type never[]
为什么是never这个类型?我认为 never 是永远不会返回的函数的返回类型。类型不应该是any[]吗?
当像这样改变对象时,类型是有意义的:
const o = {a: 1, b: 2};
const k : Array<keyof typeof o> = [];
// k has the type ("a" | "b")[]
我在实现一个返回对象的类型键的函数时发现了这种行为:
function getKeys(o: object) {
return Object.keys(o) as Array<keyof typeof o>;
}
该函数的返回类型为never[],但如果我是正确的,它实际上应该有(keyof typeof o)[]
【问题讨论】:
标签: javascript typescript types