型注釈・型推論
TypeScriptでは、変数や関数の宣言に型注釈(Type Annotation)を明示的に記述することで、型安全性を高めることができます。一方で、型推論(Type Inference)によって明示しなくても型が自動的に決まる場面も多く、柔軟に使い分けることが重要です。**
📝 型注釈(Type Annotation)
変数や引数、戻り値などに明示的に型を指定する方法です。
✅ 基本構文
const 変数名: 型 = 値;
function 関数名(引数: 型): 戻り値の型 {}
🔍 例
const name: string = "Alice";
const age: number = 30;
const isMember: boolean = true;
function greet(user: string): string {
return `Hello, ${user}`;
}
- 開発者が意図する型を正確に記述できる
- IDE の補完やバリデーション精度が向上する
⚡ 型推論(Type Inference)
初期値からTypeScriptが自動で型を判断します。
🔍 例
const city = "Tokyo"; // string と推論される
const count = 42; // number と推論される
const isOpen = false; // boolean と推論される
- 明確な初期値がある場合、型注釈は省略可能
- シンプルなコードが書ける
💡 推論されない場合や不明確な型は注釈必須
const data: any = null; // 型を指定しないと any になる
const items: string[] = []; // 空配列は明示が必要
function format(value: number | string): string {
return value.toString();
}
🧪 型注釈と推論の混在
const price = 1000; // 推論された number 型
const label: string = "商品価格"; // 明示された string 型
function show(label: string, price: number): string {
return `${label}: ¥${price}`;
}
型注釈方針
ケース | 型注釈が必要? | 理由 |
---|---|---|
値が代入されており、型が明確 | ❌ 不要(推論に任せる) | 冗長になるため |
初期値が空([] , {} など) |
✅ 必要 | 推論できないため any になる |
ジェネリック型(例:Map<string, number> ) |
✅ 必要 | 推論しにくく、明示すべき |
関数の引数と戻り値 | ✅ 原則必要 | 明確なインターフェース設計のため |
複雑な構造・ユニオン型など | ✅ 明示推奨 | 可読性・保守性の向上 |