TypeScriptにおける構造的部分型とは?
TypeScriptが採用している構造的部分型について、コード例を交えて解説します。
TypeScriptにおける構造的部分型とは?
TypeScript の型システムは 構造的型付け (structural typing) に基づいています。
これは 名前 ではなく 構造(プロパティやメソッドの形) で互換性を判断する方式です。
例: オブジェクトの互換性
type Person = {
name: string
}
type User = {
name: string
age: number
}
const u: User = { name: "Alice", age: 20 }
// User型はPerson型の構造を満たしているので代入可能
const p: Person = u
## 関数の例
```typescript
type Logger = (msg: string) => void
type DetailedLogger = (msg: string, level: number) => void
// 引数が少ない関数を、多い関数に代入するのはOK
const log1: Logger = (msg) => console.log(msg)
const log2: DetailedLogger = log1
まとめ
- TypeScript は 構造的部分型 を採用している
- 名前ではなく 型の形(構造) で互換性を判断
- オブジェクトや関数の代入チェックに大きく影響する