📜  为 TypeScript 中的可选参数提供语法

📅  最后修改于: 2022-05-13 01:56:12.750000             🧑  作者: Mango

为 TypeScript 中的可选参数提供语法

在打字稿中,“?”表示可选参数。当该参数不是必须具有值或被指定时,我们使用可选参数。即使函数指定了参数,您也可以在 JavaScript 中不提供任何参数的情况下调用它。因此,JavaScript 中默认支持可选参数,但 typescript 中的情况不同。

TypeScript 中的每个函数调用都由编译器检查,当函数指定的参数数量与参数数量不同时,或者当参数的类型与函数参数的类型不匹配时,会发出错误。我们用“?”在参数名称之后使函数参数可选。就像其余参数一样,可选参数必须出现在主参数或必需参数或错误产生之后。

语法:以下是可选参数的语法:

parameter_name ? : type

示例 1:在函数中使用可选参数

这是一个添加两个数字的函数的简单示例。 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));


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));


输出:

5
9

示例 2:可选参数必须出现在必需参数之后

可选参数必须在必需参数之后。在下面的示例中,我们通过在主要参数之前指定可选参数来与语句相矛盾,打字稿编译器引发错误说“必需参数不能跟随可选参数”。

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