TypeScript - 如何安全地从未知对象读取属性?
我想安全地访问一个 unknown 对象的属性(例如由 JSON.parse 生成的对象)。首先,我使用 typeof x === 'object' 来检查它是否是对象(或 null),然后我使用可选链 ?.[ 来避免读取 null 的属性。
这对我来说似乎是安全的,但 TypeScript 仍然报错如下:
元素隐式地具有 'any' 类型,因为类型为 '"k"' 的表达式不能用于索引类型 '{}'。属性 'k' 在类型 '{}' 上不存在。
function foo(x: unknown) {
if (typeof x === 'object') {
x?.['k'];
}
}
游乐场链接
有没有办法让 TypeScript 相信我正在安全地访问这个属性,最好是在不进行向下类型转换/as 的情况下?