TypeScript 剩余参数

注意: 如果您是 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[] 数组包含两个元素:8592

更多关于剩余参数

具有多种类型的剩余参数。

您可以使用 联合类型 来确保您的剩余参数可以接受多种类型的参数。例如,

// 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 字符串。

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战