TypeScript オプション パラメータ
例えば、以下のような関数を考えてみましょう。
function greet(name: string, message?: string): void {
console.log("Hello, " + name + ". " + message);
}
この関数は、name
という必須のパラメータと、message
というオプションのパラメータを持っています。message
は疑問符が使用されているため、関数呼び出し時に省略することができます。
以下のように関数を呼び出すことができます。
greet("Alice"); // Hello, Alice.
greet("Bob", "How are you?"); // Hello, Bob. How are you?
最初の呼び出しでは、message
パラメータが省略されています。2番目の呼び出しでは、message
パラメータが指定されています。
TypeScript オプション パラメータの例
例1: 基本的な使用
function greet(name: string, message?: string): void {
console.log("Hello, " + name + ". " + message);
}
message
はオプションのパラメータです。省略可能です。name
は必須のパラメータです。
例2: オプションパラメータのデフォルト値
function greet(name: string, message: string = "Nice to meet you!"): void {
console.log("Hello, " + name + ". " + message);
}
message
はオプションのパラメータであり、デフォルト値として"Nice to meet you!"
が設定されています。
例3: オプションパラメータの型ガード
function greet(name: string, message?: string): void {
if (message) {
console.log("Hello, " + name + ". " + message);
} else {
console.log("Hel lo, " + name + ".");
}
}
message
が定義されているかどうかをチェックし、それに応じてメッセージを出力します。
例4: オプションパラメータのオブジェクト型
interface Person {
name: string;
age?: number;
}
function greetPerson(person: Person): void {
console.log("Hello, " + person.name + ".");
if (person.age) {
console.log("You are " + person.age + " years old.");
}
}
greetPerson
関数では、person.age
が定義されているかどうかをチェックし、それに応じてメッセージを出力します。Person
インターフェースのage
プロパティはオプションです。
オーバーロード
関数のオーバーロードを使用することで、同じ名前の関数を複数のシグネチャで定義し、オプションのパラメータを持つシグネチャを含めることができます。
function greet(name: string): void;
function greet(name: string, message: string): void;
function greet(name: string, message?: string): void {
// ...
}
この例では、greet
関数の2つのシグネチャが定義されています。1つ目は必須のパラメータname
のみを持ち、2つ目はオプションのパラメータmessage
も持ちます。
デフォルト値
パラメータにデフォルト値を設定することで、そのパラメータがオプションになることがあります。
function greet(name: string, message: string = "Nice to meet you!"): void {
// ...
}
この例では、message
パラメータにデフォルト値が設定されているため、省略可能です。
nullまたはundefinedのチェック
パラメータがnull
またはundefined
であるかどうかをチェックし、それに応じて処理を行うことができます。
function greet(name: string, message?: string): void {
if (message) {
console.log("Hello, " + name + ". " + message);
} else {
console.log("Hel lo, " + name + ".");
}
}
可変長引数
可変長引数を使用することで、任意の数の引数を関数に渡すことができ、その中でオプションのパラメータを処理することができます。
function greet(name: string, ...messages: string[]): void {
console.log("Hello, " + name + ".");
for (const message of messages) {
console.log(message);
}
}
この例では、messages
は可変長引数であり、任意の数のメッセージを関数に渡すことができます。
typescript