any []类型的参数接受非数组值

时间:2018-03-29 07:59:06

标签: typescript

我们假设我的函数的参数类型为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?

有人可以解释为什么这不会在编译时抛出错误吗?

2 个答案:

答案 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
}