Dev Classmethod Jp Mini Typescript Add Object Literal Compiler
mini-typescript に object literal を追加してみた
URL: https://dev.classmethod.jp/articles/mini-typescript-add-object-literal-compiler/
日付: 2026-06-14
Tier: Tier 2
要旨: TypeScript コンパイラ学習用教材プロジェクト mini-typescript に
{ x: 1, y: 2 }のような object literal を追加する実装記録。今回の見どころは構造的型付け(structural typing)の導入。Lex/Parse/Check/Emit の4フェーズを縦断して実装し、interface 型との構造的型チェックが通ることを確認。
詳細
- 変更フェーズ: types.ts(Token.Comma 追加・ObjectLiteral/PropertyAssignment ノード定義)→ Lex → Parse → Check(型推論・
isTypeEqual構造的比較・typeToString 再帰化)→ Emit。Bind と Transform は変更なし。 - 構造的型付け: interface 型と object literal 型は別オブジェクトとして生成されるため参照等価では比較不可。プロパティ名と型の一致を構造的に比較する
isTypeEqualを導入。 - 本家 TypeScript の「変数経由なら余分プロパティ OK(部分型)」は実装せず、常に完全一致で弾く(より厳しい実装)。
- check.ts の変更が最も多い。構造的型付け導入で型比較ロジックを根本から書き換えるため。