名前構造

TypeScriptの名前構造を基準に考える。宣言空間とは、パーティションされた名前コンテナのパーティションのことで、通常は「名前空間」だが、名前空間が内部モジュールの意味なので宣言空間としている。

宣言空間は、名前の集合というよりは、順番があるので名前のリスト。

  1. 原則としては、ひとつの宣言空間に同じ名前が複数出現できない。
  2. 例外: 後の名前が先の名前を上書きすることがある。
  3. 例外: 後の名前のリファレントが、先の名前に追加されることがある。
  4. 例外: 同一の名前が異なる複数のリファレントを持つことがある。

それぞれ、

  1. 一意不変名〈イミュータブル〉 再宣言/再定義でエラー
  2. 上書き可能名〈オーバーライタブル〉 再宣言/再定義で破壊的書き換え
  3. 追加可能名〈アダブル〉 再定義で追加
  4. 多義名〈アンビギュアス〉再宣言/再定義で多義化(一種の追加)
  • 課題:これを形式化する必要がある。