注意: 如果您是 TypeScript 新手,请先查看我们的 TypeScript 入门 教程。
在TypeScript中,剩余参数允许函数将不定数量的参数作为一个数组来接收。
它们通过参数名称前的 ...
符号表示。
以下是TypeScript中剩余参数的一个简单示例。你可以阅读本教程的其余部分以了解更多信息。
示例
function addNumbers(...numbers: number[]): number{
let sum: number = 0;
for (let num of numbers) {
sum += num;
}
return sum;
}
console.log(addNumbers(5, 10, 15)); // Output: 30
console.log(addNumbers(5, 10)); // Output: 15
console.log(addNumbers(5)); // Output: 5
console.log(addNumbers()); // Output: 0
在此示例中,numbers
是一个 number
类型的剩余参数。因此,它可以接受任意数量的参数。
定义剩余参数的语法
您可以使用参数名称前的 ...
符号来创建剩余参数。
由于剩余参数是数组,因此在指定其类型时还需要使用 []
符号。
以下是在函数中定义剩余参数的语法
function functionName(...restParameterName: type[]) {
// Function body
}
这里,
...
- 表示我们正在定义一个剩余参数。restParameterName
- 剩余参数的名称。type[]
- 构成剩余参数的数组的类型。
注意事项
- 您可以在剩余参数之前有任意数量的普通参数。
- 剩余参数必须放在普通参数的后面,绝不能放在前面。违反此规则将导致错误。
示例:TypeScript 剩余参数
// Function with rest parameter 'deposits'
function studentInfo(name: string, ...marks: number[]): void {
console.log(`Student Name: ${name}`);
console.log("Marks Obtained:");
// Print the rest parameter
for (let mark of marks) {
console.log(mark);
}
console.log();
}
// Pass a single argument to the rest parameter
studentInfo("Joe Smith", 100);
// Pass two arguments to the rest parameter
studentInfo("Jane Doe", 85, 92);
输出
Student Name: Joe Smith Marks Obtained: 100 Student Name: Jane Doe Marks Obtained: 85 92
程序工作方式如下:
1. 当调用 studentInfo("Joe Smith", 100) 时。
name
为"Joe Smith"
。marks[]
数组(即剩余参数)只有一个元素:100。
2. 当调用 studentInfo("Jane Doe", 85, 92) 时。
name
为"Jane Doe"
。marks[]
数组包含两个元素:85 和 92。
更多关于剩余参数
具有多种类型的剩余参数。
您可以使用 联合类型 来确保您的剩余参数可以接受多种类型的参数。例如,
// Function with rest parameter that can take number or string arguments
// The function returns a tuple of number and string
function addConcat(...args: (number | string)[]): [number, string] {
let sum: number = 0;
let message: string = "";
for (let arg of args) {
if (typeof arg === "number") {
sum += arg;
}
else {
message += arg;
}
}
return [sum, message];
}
// Call the function
// Pass numbers and strings in random order
let [total, text]: [number, string] = addConcat(12, 2, 3, "Hasta ", 1, "la vista");
console.log(total); // 18
console.log(text); // Hasta la vista
在这里,剩余参数 args 可以接受任意数量的数字或字符串类型的参数。
- 如果单个参数是数字,它将被加到
sum
变量中。 - 但如果它是字符串,它将被连接(连接)到
message
字符串。
另请阅读