最近TypeScriptの型を触っていてハマったあたりのまとめ。だいたい仕様書に書いてあるとおりなので、すでに仕様書を読破している諸兄にはこの記事は必要ないです。 宣言空間 (declaration space) とは 宣言空間というのは、同一宣言空間で同じ名前が複数存在するとエラーになるような空間のこと。 TypeScriptには大きく分けて3つの宣言空間 (declaration space) がある *1。 変数 (for variables) またはメンバー (for members)*2*3 型 (for named types) 名前空間 (for namespaces) どういうことかというと、TypeScriptでは次のコードがエラーにならない。 var M = 0; // 変数宣言空間 interface M {} // 型宣言空間 module M {} // 名前空間