我们假设我的函数的参数类型为any[]
someFunction(args: any[]): boolean {
// some code
}
现在我想调用该函数并传递一个具有任何类型值的数组。这应该没问题,它是:
someFunction([value1, value2, value3]); // OK, as expected
但是,如果我传递一个不是数组的值,我希望得到一个类型错误,但我不会:
someFunction(value1); // OK, but shouldn't I get a type error?
有人可以解释为什么这不会在编译时抛出错误吗?
答案 0 :(得分:2)
问题是如果value1
的类型是any
,那么这是有效的,因为any
与任何其他类型兼容,因此它将与any[]
兼容
因此,例如,如果将数字传递给函数,则会出现错误,但如果传递任何
则不会function someFunction(args: any[]): boolean {
return true
}
declare var value1: any;
someFunction(value1) //ok
someFunction(1) //not ok
declare var nonAny: number;
someFunction(nonAny) //not ok
答案 1 :(得分:0)
任何类型的数组的正确语法是:
someFunction(args: Array<any>): boolean {
// some code
}