【发布时间】:2017-01-03 06:49:35
【问题描述】:
请考虑以下函数:
function getArray(): string[] | number[] {
return [];
}
长话短说,当我这样做时:
getArray().forEach(item => console.log(item));
编译器给了我这个:
TS2349无法调用类型缺少调用签名的表达式。
为什么会这样?在我看来,forEach 应该可以在这里调用而不会出错,因为 as 就编译器而言,肯定会返回一个数组。有趣的是,IntelliSense 会像往常一样为此方法提供自动完成功能,但在使用自动完成建议后,错误消息将显示在输出中。
这是一个错误,还是我在这里遗漏了一些微不足道的东西?
编辑:我可以使用各种变通方法,例如返回 Array<string | number> 或使用重载,但我特别感兴趣的是为什么返回两个数组类型的联合不允许方法调用。
确定类型是数组,元素类型为string | number。
【问题讨论】:
标签: arrays typescript types