Arrays 为什么typescript假定数组元素查找赢了';不能是未定义的吗?
我很惊讶,这个类型脚本不会导致类型错误(也可以在中找到):Arrays 为什么typescript假定数组元素查找赢了';不能是未定义的吗?,arrays,typescript,Arrays,Typescript,我很惊讶,这个类型脚本不会导致类型错误(也可以在中找到): class-Foo{ 构造函数(只读x:number,只读y:number){} } const xOfFirstFoo=(arr:Array):number=>{ 返回arr[0].x } const result=xOfFirstFoo([]); //上述行的结果是: //[错误]:“执行的JavaScript失败:” //[错误]:无法读取未定义的属性“x” 天真地说,我希望打字机知道arr[0](或者更一般地说,任何arr[I
class-Foo{
构造函数(只读x:number,只读y:number){}
}
const xOfFirstFoo=(arr:Array):number=>{
返回arr[0].x
}
const result=xOfFirstFoo([]);
//上述行的结果是:
//[错误]:“执行的JavaScript失败:”
//[错误]:无法读取未定义的属性“x”
天真地说,我希望打字机知道arr[0]
(或者更一般地说,任何arr[I]
)可能是Foo
或未定义的
,因此不能保证.x
属性可用
这里发生了什么?来自@jornsharpe和@shinigami的评论帮助我理解了这一点!释义:
{[index:number]:T}
,其中假定索引
的每个值都有一个定义的T
值。如果需要特定的长度,可以使用
来自@jornsharpe和@shinigami的评论帮助我理解了这一点!释义:
{[index:number]:T}
,其中假定索引
的每个值都有一个定义的T
值。如果需要特定的长度,可以使用
数组基本上是
{[index:number]:T}
;假设每个索引都是定义的,它们没有任何长度信息(这是一个值,不是类型)。如果你只期望一件事,你可以使用一个。但这项功能将与TS 4一起发布。1@Shinigami我对这面旗帜一无所知。谢谢你,伙计!数组基本上是{[index:number]:T}
;假设每个索引都是定义的,它们没有任何长度信息(这是一个值,不是类型)。如果你只期望一件事,你可以使用一个。但这项功能将与TS 4一起发布。1@Shinigami我对这面旗帜一无所知。谢谢你,伙计!