【发布时间】:2020-10-29 22:57:47
【问题描述】:
在 Typescript 4.0.3 中,当我尝试调用传播参数的函数时,我预计会出错。 下面的代码不会抛出错误(并且 tsc 会编译它),但它显然会失败,因为没有要归约的数组。
是我的代码错误还是扩展运算符有问题?
calc.ts
export function substract(...a: number[]):number {
return a.reduce((acc, val) => acc - val);
}
main.ts
import { substract } from "./calc.js";
console.log(substract()); // Should display an error
console.log(substract(1)); // Works fine
console.log(substract(2,1)); // Works fine
【问题讨论】:
-
它不会因为没有数组而失败,它会因为它是一个 empty 数组而失败并且您没有提供初始值。但这是一个运行时问题,而不是编译时问题。
-
"// 应该显示一个错误" - 在没有输入的情况下调用可变参数函数通常是完全可以的。这意味着你得到一个空数组。您可以指定“至少一个参数”,但我认为更大的问题是您的代码没有处理空数组,而不是签名问题。
-
谢谢@jonrsharpe,我的错误在这里,我在开发控制台中尝试过,没想到......“空参数”会导致[]。运行时问题的句子也很有意义,因为我使用的是 ts-jest,它立即导致测试失败。
标签: typescript