使用TypeScript的开放式函数参数
国际海事组织, TypeScript语言的主要关注之一是支持现有的香草JavaScript代码。 这是我第一眼看到的印象。 看看下面的JavaScript函数是完全有效的:
注意:我不是说我喜欢这种方法。 我只是说这是一个有效的JavaScript代码。
function sum(numbers) { var agregatedNumber = 0; for(var i = 0; i < arguments.length; i++) { agregatedNumber += arguments[i]; } return agregatedNumber; }
所以,我们使用任何数量的参数来使用这个函数:
console.log(sum(1, 5, 10, 15, 20));
但是,当我使用TypeScript Playground进行试用时,会出现编译时错误。
我假设这是一个错误。 假设我们没有兼容性问题。 那么,有没有办法用开放式的论点来写这种types的函数呢? 如在C#中的params
function?
这样做的TypeScript方法是将省略号运算符( ...
)放在参数的名称之前。 以上将被写为,
function sum(...numbers: number[]) { var aggregateNumber = 0; for (var i = 0; i < numbers.length; i++) aggregateNumber += numbers[i]; return aggregateNumber; }
这将然后键入正确的检查
console.log(sum(1, 5, 10, 15, 20));
除了@chuckj答案:你也可以在TypeScript中使用lambdaexpression式
function sum(...nums: number[]): number { return nums.reduce((a, b) => a + b, 0); }