TypeScriptでは、静的な型システムが提供されており、変数や関数の型を事前に定義することができます。これにより、コードの品質向上やバグの早期発見が可能になります。型判定を活用して、より安全で効率的なコードを書く方法を学びましょう。
単純な型判定
まず初めに、変数の型を判定し、条件に基づいて処理を行う方法を見てみましょう。
let value: number | string = 42;
if (typeof value === 'number') {
// 数値の場合の処理
console.log('数値です');
} else if (typeof value === 'string') {
// 文字列の場合の処理
console.log('文字列です');
} else {
// その他の場合の処理
console.log('その他の型です');
}
カスタム型を使用した型判定
TypeScriptでは、enumやunion typeを使用して、独自の型を定義することができます。これを利用して、より具体的な型判定を行うことができます。
type Shape = 'circle' | 'square' | 'triangle';
function getArea(shape: Shape, size: number): number {
switch (shape) {
case 'circle':
return Math.PI * Math.pow(size / 2, 2);
case 'square':
return Math.pow(size, 2);
case 'triangle':
return (Math.sqrt(3) / 4) * Math.pow(size, 2);
default:
throw new Error('未知の形状です');
}
}
ガード節を使用した型の絞り込み
関数内での条件判定によって、型を絞り込むことができます。これをガード節と呼びます。
type Fish = { swim: () => void };
type Bird = { fly: () => void };
function move(animal: Fish | Bird) {
if ('swim' in animal) {
// Fish型の場合
animal.swim();
} else {
// Bird型の場合
animal.fly();
}
}
TypeScriptの型判定と条件分岐を駆使して、堅牢で可読性の高いコードを書くことができます。適切な型の使用は、開発プロセスを効果的にサポートし、安全性を向上させます。