オプション関数マスター:TypeScriptインターフェースの高度な使い方
TypeScriptインターフェースにおけるオプション関数
このとき、関数の引数すべてを必須にするのではなく、一部の引数をオプションにすることができます。
オプション引数の定義
オプション引数は、?
記号を使用して定義します。
interface MyInterface {
// 必須引数
requiredArg: string;
// オプション引数
optionalArg?: number;
// 複数のオプション引数
func(arg1: string, arg2?: number, arg3?: boolean): void;
}
上記の例では、MyInterface
インターフェースには3つのプロパティが定義されています。
-
func
: 関数型。3つの引数を持つ。arg1
: 必須引数。文字列型arg2
: オプション引数。数値型。デフォルト値はundefined
オプション引数は、関数呼び出し時に省略できます。
const myObj: MyInterface = {
requiredArg: "Hello",
// optionalArg: 10, // 省略してもOK
};
myObj.func("World"); // オプション引数を省略
myObj.func("World", 10); // オプション引数を指定
上記のように、optionalArg
は省略しても問題ありません。
また、オプション引数を指定する場合は、必須引数の後に指定する必要があります。
オプション引数のデフォルト値
オプション引数には、デフォルト値を指定することができます。
interface MyInterface {
func(arg1: string, arg2?: number = 10): void;
}
上記の例では、func
関数のarg2
引数にデフォルト値10
を指定しています。
この場合、arg2
引数を省略すると、デフォルト値10
が使用されます。
const myObj: MyInterface = {
requiredArg: "Hello",
};
myObj.func("World"); // arg2はデフォルト値10が使用される
TypeScriptインターフェースにおけるオプション関数は、コードの柔軟性を高めるために役立ちます。
interface MyInterface {
// 必須引数
requiredArg: string;
// オプション引数
optionalArg?: number;
// 複数のオプション引数
func(arg1: string, arg2?: number, arg3?: boolean): void;
}
const myObj: MyInterface = {
requiredArg: "Hello",
};
// オプション引数を省略
myObj.func("World");
// オプション引数を指定
myObj.func("World", 10);
// オプション引数とデフォルト値
myObj.func("World", 10, true);
// オプション引数をすべて省略
myObj.func("World", undefined, undefined);
デフォルト値の利用例
interface MyInterface {
func(arg1: string, arg2?: number = 10): void;
}
const myObj: MyInterface = {
requiredArg: "Hello",
};
// オプション引数を省略
myObj.func("World"); // arg2はデフォルト値10が使用される
// オプション引数を指定
myObj.func("World", 20);
- オプション引数のデフォルト値は、関数リテラルやクラスのコンストラクタでも使用できます。
- オプション引数は、インターフェースだけでなく、クラスや型エイリアスでも使用できます。
オプション引数を定義する他の方法
しかし、他にもいくつかの方法があります。
デフォルト値の利用
オプション引数にデフォルト値を指定することで、?
記号を使用せずにオプション引数を定義できます。
interface MyInterface {
func(arg1: string, arg2 = 10): void;
}
Partial型
Partial
型を使用して、インターフェースのすべてのプロパティをオプションにすることができます。
interface MyInterface {
requiredArg: string;
optionalArg?: number;
}
const partialObj: Partial<MyInterface> = {
requiredArg: "Hello",
};
上記の例では、Partial<MyInterface>
型を使用して、MyInterface
インターフェースのすべてのプロパティをオプションにしています。
Record型
Record
型を使用して、キーと値のペアのオブジェクトを定義できます。
const myObj: Record<string, any> = {
requiredArg: "Hello",
optionalArg: 10,
};
上記の例では、Record<string, any>
型を使用して、キーが文字列で値が任意の型のオブジェクトを定義しています。
?
記号以外にも、デフォルト値、Partial
型、Record
型を使用して、オプション引数を定義することができます。
javascript typescript