使用 TypeScript 的开放式函数参数

IMO,打字机语言的主要关注点之一是支持现有的普通 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));

但是,当我用 运动场尝试这种方法时,会出现编译时错误。

我猜这是个窃听器。假设我们没有兼容性问题。那么,有没有办法用开放式参数来写这种类型的函数呢?比如 C # 中的 params特性?

100422 次浏览

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));

除了@chuck j 回答: 您还可以在 TypeScript 中使用 arrow function expression(在 Java/中类似于 lambda)。NET)

function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0);
}

在 Typecript 中,它是 休息参数的概念,是接收多个类似类型值的参数。如果我们针对类型脚本,那么我们必须编写代码 ECMAScript 6标准,然后类型脚本转换器将其转换为等效的 java 脚本代码(这是 ECMAScript 5标准)。如果我们使用类型脚本,那么我们必须使用三个点(...)首选项和参数变量名,比如函数 sum (... number: number []) ,那么它就可以工作。

注: Rest Parameter 必须是参数 list.same 函数 sum (name: string,age: number,... number: number [])中的最后一个参数。