TypeScript 提供可选参数的语法
在TypeScript中,”?”表示可选参数。当参数不是强制要求具有值或被指定时,我们使用可选参数。即使一个函数指定了参数,在JavaScript中你可以调用它而不给出任何参数。因此,默认情况下,在JavaScript中支持可选参数,但在TypeScript中情况并不相同。
在TypeScript中,每个函数调用都会被编译器检查,当函数指定的参数数量与参数数量不一致,或者参数的类型与实参的类型不匹配时,会发出错误。我们使用”?”在参数名后面使函数参数变为可选。就像剩余参数一样,可选参数必须出现在主要或必需参数之后,否则会产生错误。
语法: 以下是可选参数的语法:
parameter_name ? : type
示例1:在函数中使用可选参数
下面是一个简单的示例,展示了一个用于求两个数之和的函数。其中,num2被视为可选参数。在程序中,我们通过检查num2是否未定义,来确保num2有传入的值。因此有两种情况:如果我们给可选参数传入了值,或者只有必填参数有与之关联的值。
Javascript
// Function to add two numbers
function add(num1: number, num2?: number): number {
if (typeof num2 !== "undefined") {
return num1 + num2;
}
return num1;
}
// Function call
console.log(add(2, 3));
console.log(add(9));
输出:
5
9
示例2: 可选参数必须在必选参数之后出现
可选参数必须在必选参数之后出现。在下面的示例中,我们违背了这一规定,指定了可选参数在主要参数之前,typescript编译器报错:”必选参数后面不允许出现可选参数”。
Javascript
// Add function
function add(num1?: number, num2: number): number {
if (typeof num2 !== "undefined") {
return num1 + num2;
}
return num1;
}
// Function call
console.log(add(2, 3));
console.log(add(9));
输出:
error TS1016: A required parameter cannot follow an optional parameter.
function add(num1?: number, num2: number): number { .. }
参考: https://www.typescriptlang.org/docs/handbook/functions.html#optional-and-default-parameters