TypeScriptは静的型付け言語として、型を駆使してコードの安全性を向上させることができます。その中でも、XOR(排他的論理和)型は特定の型が一度には存在できないことを表現するのに役立ちます。この記事では、TypeScriptでXOR型をどのように使用するかに焦点を当てます。
XOR型とは
XOR型は、複数の型のうち、一度にはどれか一つしか存在しないことを示す型です。これは、与えられた変数やパラメータが複数の型に一致することを防ぐのに役立ちます。以下は、XOR型の基本的な例です。
type XOR<T, U> = T | U extends object
? (key: keyof T & string) extends never
? T | U
: never
: never;
このXOR型の定義では、T
型またはU
型がオブジェクトである場合、T
型とU
型のプロパティが同時に存在することを防ぎます。
TypeScriptでのXOR型の利用例
例として、Person
型とCompany
型があり、これらの型を組み合わせてContact
型を作成するケースを考えてみましょう。
type Person = {
name: string;
age: number;
};
type Company = {
companyName: string;
industry: string;
};
type Contact = XOR<Person, Company>;
const personContact: Contact = {
name: "John Doe",
age: 30,
};
const companyContact: Contact = {
companyName: "ABC Inc.",
industry: "Technology",
};
この例では、Person
型とCompany
型のどちらか一方しか持てないContact
型を作成しています。これにより、Contact
型の変数がPerson
型とCompany
型の両方のプロパティを持つことを防ぎます。
XOR型は、複雑な型の組み合わせにおいても柔軟に利用でき、型安全性を向上させるのに役立ちます。TypeScriptの型システムの強力さを活かして、コードの信頼性を高めるためにXOR型を上手に活用しましょう。