tug*_*erk 111 javascript typescript
IMO是TypeScript语言的主要关注点之一,它支持现有的vanilla JavaScript代码.这是我乍一看的印象.看一下完全有效的以下JavaScript函数:
注意:我不是说我喜欢这种方法.我只是说这是一个有效的JavaScript代码.
function sum(numbers) {
var agregatedNumber = 0;
for(var i = 0; i < arguments.length; i++) {
agregatedNumber += arguments[i];
}
return agregatedNumber;
}
Run Code Online (Sandbox Code Playgroud)
因此,我们使用任意数量的参数来使用此函数:
console.log(sum(1, 5, 10, 15, 20));
Run Code Online (Sandbox Code Playgroud)
但是,当我使用TypeScript Playground尝试此操作时,它会产生编译时错误.
我假设这是一个错误.我们假设我们没有兼容性问题.那么,有没有办法用开放式参数编写这种类型的函数?如paramsC#中的功能?
chu*_*ckj 250
TypeScript的做法是将省略号operator(...)放在参数名称之前.以上将写成,
function sum(...numbers: number[]) {
var aggregateNumber = 0;
for (var i = 0; i < numbers.length; i++)
aggregateNumber += numbers[i];
return aggregateNumber;
}
Run Code Online (Sandbox Code Playgroud)
然后,这将正确键入检查
console.log(sum(1, 5, 10, 15, 20));
Run Code Online (Sandbox Code Playgroud)
在 Typescript 中它是Rest Parameter的概念,它是接收多个相似类型值的参数。如果我们针对 typescript 那么我们必须编写代码ECMAScript 6标准,然后 typescript 转换器将其转换为等效的 java 脚本代码(这是ECMAScript 5标准。如果我们使用 typescript,那么我们必须使用三个 dot(...) preferredx 和 restparameter 变量名称,例如 function sum(...numbers: number[]),那么它会起作用。
注意: Rest Parameter 必须是参数列表中的最后一个参数。同样的函数 sum(name:string,age:number,...numbers: number[])。
除了@chuckj答案:您还可以arrow function expression在TypeScript中使用(lambda在Java / .NET中是一种)
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68587 次 |
| 最近记录: |