📜  为什么在 TypeScript 变量中使用问号?(1)

📅  最后修改于: 2023-12-03 15:06:16.840000             🧑  作者: Mango

为什么在 TypeScript 变量中使用问号?

在 TypeScript 中,我们可以为变量指定类型并指定其是否为可选参数,这种可选参数通常使用问号表示。那么,为什么在 TypeScript 变量中使用问号呢?这篇文章将向您解释。

什么是可选参数?

在 TypeScript 中,如果我们不使用问号来标记变量,则默认情况下该变量是必需的,也就是说,它必须在调用时提供一个值。例如:

function greet(name: string) {
  console.log(`Hello, ${name}!`);
}

greet("Alice"); // 输出 "Hello, Alice!"
greet(); // 报错,必须提供一个参数

在这个例子中,我们定义了一个函数 greet,它接收一个类型为 string 的参数 name。当我们调用该函数并提供一个值时,它将输出一个欢迎消息。但是,当我们调用该函数而没有提供一个值时,TypeScript 将抛出一个错误,因为缺少必需的参数。

如果我们将参数标记为可选的,则它在调用时不是必需的,可以省略。为此,我们可以在参数名称后面添加一个问号:

function greet(name?: string) {
  console.log(`Hello, ${name || "World"}!`);
}

greet("Alice"); // 输出 "Hello, Alice!"
greet(); // 输出 "Hello, World!"

现在,当我们调用函数 greet 时,我们可以提供一个可选的参数 name,但这个参数不是必需的。如果我们提供了一个值,它将被用于输出欢迎消息。否则,函数将使用一个默认值 "World"

为什么使用可选参数?

使用可选参数的好处之一是使代码更加灵活。如果您有一个函数,这个函数需要接收多个参数,并且您希望某些参数是可选的,那么这些可选参数可以帮助您避免在使用函数时强制用户提供所有参数。

另一个好处是在某些情况下,您可能无法准确地预测参数的数量。例如,如果您正在编写一个可变长度的代表用户购物车商品的数组的函数,则您可能无法预测用户将添加多少个项目。

使用可选参数还可以让您更好地处理第三方库或其他函数的输出。例如,您可能希望从返回 null 或 undefined 值的函数中解构值,而可选参数可以让您在解构时跳过这些无效的值。

结论

在 TypeScript 中,使用问号来标记变量为可选参数是一种使代码更加灵活的方式。可选参数使代码更加可读和易于维护,可以处理未知数量的参数和无效的返回值。