export class ServiceAreaComponent implements OnInit, OnDestroy {
_clickedPoint = [];
this.serviceArea.getToken().subscribe((d) => {
this.isLoading = true;
this.getServiceArea(this._clickedPoint);
})
}
getServiceArea(pointArray: [], driveTimeList ? : any) {}
我已经声明了一个名为_clickedPoint = []
的类属性作为数组。打字稿将其作为Array<any>
。
同时,我在类内部创建了一个方法来接受单击的点,并声明了一个名为pointArray:[]
的方法参数,与_clickedPoint
一样。这次这次打字稿接受了这个没有分配任何类型的数组。我只是想知道为什么打字稿没有将类型any
分配给方法参数
答案 0 :(得分:3)
_clickedPoint = [];
是没有类型的成员的初始化(具有空数组)。 Typescript会将_clickedPoint
的类型推断为任何类型的数组(因此any[]
或never[]
取决于编译器设置,但您似乎属于前一种情况)>
pointArray: []
是类型为empty tulpe([]
)的参数。运行时的元组是数组,但是Typescript将检查元组的长度和元组中的项是否为正确的类型(有关元组here的更多信息)
如果没有指定类型,Typescript会推断类型,例如,当您不指定成员的类型时,但是它将获取您在类型注释中拼出的确切类型,而无需添加任何内容,例如当您指定时它作为参数。在这种情况下,由于空数组文字[]
与空元组类型(也是[]
但用作类型注释)的类型不同,这有点令人困惑。
您真正想要的是让pointArray
为数组类型:
export class ServiceAreaComponent {
_clickedPoint = [];
test() {
this.getServiceArea(this._clickedPoint);
}
getServiceArea(pointArray: any[], driveTimeList?: any) {
}
}