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

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

TypeScript 中的可选参数

在 TypeScript 中,函数的参数可以被标记为可选的,这意味着这个参数不是必须要传入的。这为编写更灵活的函数提供了便利,允许函数接受各种不同数量的参数。

使用问号来标记可选参数

在 TypeScript 中,标记可选参数的语法很简单,只需在参数名后面添加一个问号。例如:

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

greet();
greet("TypeScript");

上面的 greet 函数接受一个可选参数 name,并在控制台输出问候语。如果没有传入 name 参数,函数会打印 "Hello, World!"。如果传入了 name,函数会打印 "Hello, TypeScript!"(或者你传入的具体值)。

可选参数和默认参数的区别

虽然可选参数和默认参数都可以使函数更加灵活,但它们是有区别的。可选参数只是标记了参数是否需要传入,但对于没有传入的可选参数,它们的值将会是 undefined。默认参数则是给参数指定了默认值,如果没有传入参数,它们会使用默认值。

下面的例子演示了可选参数和默认参数的区别:

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

greet(); // 输出 "Hello, World!"
greet("TypeScript"); // 输出 "Hello, TypeScript!"
greet("TypeScript", "Bonjour"); // 输出 "Bonjour, TypeScript!"
greet(undefined, "Bonjour"); // 输出 "Bonjour, World!"

请注意,我们可以使用 undefined 来显式地传递 undefined,并让可选参数使用默认值。

总结

在 TypeScript 中,我们可以使用问号来标记函数的可选参数。这使得函数更加灵活,可以接受不同数量的参数。和默认参数不同,可选参数的值将会是 undefined,如果没有传入参数。