使用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#中的paramsfunction?

这样做的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); }