我收到TS错误:
类型脚本错误:类型“undefined”不能用作索引类型。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] : {};
}
一切都像一个魅力-为什么?
2条答案
按热度按时间vmdwslir1#
由于代码流中的间接性,Typescript将不按预期执行代码分析。这就是 * 用户定义的类型保护 * 来保存这一天的时候。
因为index在
getData
方法中是可选的,所以它可能是undefined
,所以第二种方法是可行的。fd3cxomn2#
类型保护不适用于中间变量。你必须直接测试变量:
或者:
另请参阅:类型防护装置手册中的文档。
注意:现在不需要
typeof index !== 'undefined'
:ES2015/2016 way of 'typeof varName === 'undefined`?