注意: 如果您是 TypeScript 新手,请先查看我们的 TypeScript 入门 教程。
TypeScript 允许您为函数设置默认参数值。当调用函数时没有传递相应的参数,就会使用这些默认值。
示例
function greet(name: string = "Guest"): void {
console.log(`Hello, ${name}!`);
}
greet();
// Output: Hello, Guest!
在此示例中,greet()
函数具有一个默认参数 name
,其字符串值为 "Guest"
。由于我们没有向函数传递任何参数,因此它使用了默认值。
示例 1:TypeScript 默认参数
function sum(x: number = 3, y: number = 5): number {
// Return sum
return x + y;
}
// Pass arguments to x and y
let result: number = sum(5, 15);
console.log(`Sum of 5 and 15: ${result}`);
// Pass argument to x but not to y
result = sum(7);
console.log(`Sum of 7 and default value (5): ${result}`);
// Pass no arguments
// Use default values for x and y
result = sum();
console.log(`Sum of default values (3 and 5): ${result}`);
输出
Sum of 5 and 15: 20 Sum of 7 and default value (5): 12 Sum of default values (3 and 5): 8
在上面的示例中,x 的默认值为 3,y 的默认值为 5。
sum(5, 15)
- 当两个参数都传递时,x 取 5,y 取 15。sum(7)
- 当传递 7 时,x 取 7,y 取默认值 5。sum()
- 当不传递任何参数时,x 和 y 分别取默认值 3 和 5。

默认参数应放在必需参数之后
如果您的函数同时包含默认参数和必需参数(即没有默认值的参数),则应将默认参数放在必需参数的**后面**。例如,
function sum(x: number, y: number, z: number = 10): number {
return x + y + z;
}
// Don't pass argument to z
// So z = 10 by default
let result: number = sum(5, 15);
console.log(`5 + 15 + 10 = ${result}`);
// Pass argument to z
result = sum(5, 15, 13);
console.log(`5 + 15 + 13 = ${result}`);
输出
5 + 15 + 10 = 30 5 + 15 + 13 = 33
在上面的示例中,我们将默认参数 z: number = 10
放在了参数列表的最后。
因此,当 TypeScript 遇到代码 sum(5, 15)
时,它清楚地知道 x = 5
并且 y = 15
。
将默认参数放在前面
现在,让我们通过将默认参数放在前面来编写一个类似的程序
function sum(x: number = 10, y: number, z: number): number {
return x + y + z;
}
// Only pass two arguments
// Invalid code
let result: number = sum(5, 15);
console.log(result);
输出
error: Expected 3 arguments, but got 2. An argument for 'z' was not provided.
正如您所见,当我们向 sum()
函数只传递两个参数时,我们遇到了一个错误。
这是因为 TypeScript 将 5 分配给 x
,将 15 分配给 y
。因此,没有参数传递给 z
参数,这会导致错误。
注意: 如果您将默认参数放在必需参数之间,您也会遇到类似的问题。
关于默认参数的更多内容
在 TypeScript 中,您可以将一个参数作为另一个参数的默认值。例如,
function sum(x: number = 1, y: number = x, z: number = x + y): void {
console.log(x + y + z);
}
sum();
// Output: 4
在上面的例子中:
- x 的默认值为 1。
- y 的默认值设置为 x 参数。
- z 的默认值是 x 和 y 的总和。
因此,当 sum()
在没有任何参数的情况下调用时,它会使用这些默认值,导致计算 1 + 1 + 2 = 4
。因此,输出为 4。
我们也可以在 TypeScript 中将函数作为默认值。例如,
function sum(): number {
return 15;
}
// Use sum() in default value of y
function calculate( x, y = x * sum() ): number {
return x + y;
}
let result: number = calculate(10);
console.log(result);
// Output: 160
这里,
sum()
函数返回 15。- 10 被传递给
calculate()
函数。 - x 变为 10,y 变为 150(
x * sum()
)。 - 结果将是 160(
x + y
)。
在 TypeScript 中,当您将 undefined
传递给默认参数时,函数会采用默认值。例如,
function test(x: number = 1): void {
console.log(x);
}
// Pass undefined
// Takes default value 1
test(undefined);
// Output: 1
这同样适用于参数列表开头或中间有默认参数的函数。例如,
// Function that has default parameter at the beginning
function sum(x: number = 10, y: number, z: number): number {
return x + y + z;
}
// Function that has default parameter at the middle
function difference(x: number, y: number = 10, z: number): number {
return x - y - z;
}
// Call sum() function
// Pass undefined to default parameter
let result: number = sum(undefined, 5, 15);
console.log(`10 + 5 + 15 = ${result}`);
// Call difference() function
// Pass undefined to default parameter
result = difference(5, undefined, 15);
console.log(`5 - 10 - 15 = ${result}`);
// Output:
// 10 + 5 + 15 = 30
// 5 - 10 - 15 = -20
另请阅读