gpt4 book ai didi

javascript - typescript : Argument of type 'any[]' is not assignable to parameter of type '[]' . ts(2345)

转载 作者:行者123 更新时间:2023-11-30 11:05:16 25 4
gpt4 key购买 nike

export class ServiceAreaComponent implements OnInit, OnDestroy {
_clickedPoint = [];

this.serviceArea.getToken().subscribe((d) => {
this.isLoading = true;
this.getServiceArea(this._clickedPoint);
})
}

getServiceArea(pointArray: [], driveTimeList ? : any) {}

我已经声明了一个名为 _clickedPoint = [] 的类属性作为一个数组。 typescript 将其视为 Array<any> .同时,我在类中创建了一个方法来接受点击点,我声明了一个名为 pointArray:[] 的方法参数。同_clickedPoint .但这一次 typescript 采用了这个数组,没有分配任何类型。我只是想知道为什么 typescript 不分配类型 any方法参数

最佳答案

_clickedPoint = []; 是一个没有类型的成员的初始化(使用空数组)。 Typescript 会将 _clickedPoint 的类型推断为任何类型的数组(因此 any[]never[] 取决于编译器设置,但你似乎属于前一种情况)

pointArray: [] 是空 tulpe ([]) 类型的参数。运行时的元组是数组,但 typescript 会检查元组的长度和元组中的项目是否属于正确的类型(阅读有关元组的更多信息 here )

如果未指定类型,Typescript 将推断类型,例如当您未指定成员的类型时,但会采用您在类型注释中拼写的确切类型而不向其添加任何内容,例如当您指定时它为参数。在这种情况下,它有点令人困惑,因为空数组文字 [] 与空元组类型具有不同的类型(也是 [] 但用作类型注释)

你真正想要的是让 pointArray 成为数组类型:

export class ServiceAreaComponent {
_clickedPoint = [];
test() {
this.getServiceArea(this._clickedPoint);
}
getServiceArea(pointArray: any[], driveTimeList?: any) {
}
}

关于javascript - typescript : Argument of type 'any[]' is not assignable to parameter of type '[]' . ts(2345),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com