我收到 TS 错误:
TypeScript 错误:类型“未定义”不能用作索引类型。 TS2538
对于这个简单的函数(根据提供的索引从数组获取对象):
const myArr: Array<object> = [{name: 'John'}, {name: 'Tom'}]
function getData(index?: number) {
const isIndex : boolean = typeof index !== 'undefined';
return isIndex ? myArr[index] : {};
}
对我来说更神秘的是,当我将其更改为:
function getData(index?: number) {
return typeof index !== 'undefined' ? myArr[index] : {};
}
一切都像魅力一样 - 为什么?
由于代码流中的间接性,Typescript 将不会按预期执行代码分析。这是当用户定义的类型防护进来拯救世界。
function isUndefined(index: any): index is boolean {
return typeof index === "undefined";
}
function getData(index?: number) {
return isUndefined(index) ? {} : myArr[index];
}
因为索引是可选的getData
方法,有可能会是undefined
,你的第二种技术有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)