📜  C# 中的参数 - TypeScript (1)

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

C# 中的参数 - TypeScript

在 C# 中,我们可以通过在方法或函数中添加参数来传递数据。同样,在 TypeScript 中也有类似的参数概念,本文将介绍 TypeScript 中的参数及其用法。

常规参数

在 TypeScript 中,我们可以像在 C# 中一样,通过在函数或方法参数列表中定义参数来使用它们。

function myFunction(firstName: string, lastName: string) {
  console.log(`Hello ${firstName} ${lastName}`);
}

myFunction("John", "Doe"); // 输出 Hello John Doe

在上面的示例中,我们定义了两个字符串参数 firstNamelastName,在函数中输出了它们的值。

可选参数

有时候,我们并不关心某个参数是否传递了值,这时可选参数就派上用场了。在 TypeScript 中,我们可以通过在参数名后面添加 ? 来声明可选参数。

function myFunction(firstName: string, lastName?: string) {
  if (lastName) {
    console.log(`Hello ${firstName} ${lastName}`);
  } else {
    console.log(`Hello ${firstName}`);
  }
}

myFunction("John"); // 输出 Hello John
myFunction("John", "Doe"); // 输出 Hello John Doe

在上面的示例中,我们将 lastName 参数标记为可选。如果不传递 lastName,则函数输出 Hello John。如果传递了 lastName,则输出 Hello John Doe

默认参数

有时候,我们需要在函数参数中添加默认值,这时默认参数就很有用了。在 TypeScript 中,我们可以为参数添加默认值,这样在调用函数时,如果不传递该参数,则使用默认值。

function myFunction(firstName: string, lastName = "Doe") {
  console.log(`Hello ${firstName} ${lastName}`);
}

myFunction("John"); // 输出 Hello John Doe
myFunction("John", "Smith"); // 输出 Hello John Smith

在上面的示例中,我们定义了一个默认参数 lastName,它的默认值为 "Doe"。如果不传递 lastName,则使用默认值输出 Hello John Doe,如果传递了 lastName,则输出 Hello John Smith

剩余参数

有时候,我们需要在函数参数中接收多个参数,但不知道参数的数量。这时剩余参数就很有用了。在 TypeScript 中,我们可以通过在参数前加 ... 来声明剩余参数。

function myFunction(firstName: string, ...restOfNames: string[]) {
  console.log(`Hello ${firstName} ${restOfNames.join(", ")}`);
}

myFunction("John", "Doe", "Smith"); // 输出 Hello John Doe, Smith
myFunction("John", "Doe", "Smith", "Johnson"); // 输出 Hello John Doe, Smith, Johnson

在上面的示例中,我们使用了 ...restOfNames 来声明多个参数,我们不知道这些参数的数量。然后我们使用 join 方法将数组中的多个值用逗号连接在一起输出。

重载

在 C# 中,我们可以使用方法重载的方式定义多个方法,但在 TypeScript 中,重载的方式略有不同。通过使用函数和接口的结合体,我们可以实现参数重载。下面是一个示例:

interface IMyFunction {
  (firstName: string): void;
  (firstName: string, lastName: string): void;
}

let myFunction: IMyFunction = function(firstName: string, lastName?: string) {
  if (lastName) {
    console.log(`Hello ${firstName} ${lastName}`);
  } else {
    console.log(`Hello ${firstName}`);
  }
}

myFunction("John"); // 输出 Hello John
myFunction("John", "Doe"); // 输出 Hello John Doe

在上面的示例中,我们定义了一个接口 IMyFunction,这个接口有两个函数签名,一个带一个参数,一个带两个参数。然后我们使用这个接口定义一个函数 myFunction,它根据传递参数的数量,调用不同的函数签名。

结论

在 TypeScript 中,参数的定义和使用与 C# 中很相似。我们可以像在 C# 中一样定义常规参数、可选参数、默认参数和剩余参数。同时,我们还可以使用参数重载的方式定义多个函数签名。这些特性使得 TypeScript 的开发更加灵活和强大。