created: 2022-08-02T09:19:20.961Z

TypeScript では name, length の静的フィールドはコンパイルエラーにならない

たとえば以下のようなコード( _.ts )は意図通りに動作しない。

class TestClass {
  name = "this is name";
  length = 100;
}
console.log(TestClass.name);
console.log(TestClass.length);
$ npx ts-node /tmp/_.ts
TestClass
0

そもそもクラス変数みたいなフィールドが欲しい場合は static 識別子をつけないといけない(つけないとコンパイルが通らない)のだが、JavaScript の仕様上、Function.name などビルドインの関数があるためこの2つの属性ではコンパイルエラーにならない。

参考

Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー
[ad] Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー
Daniel J. Barrett, 大嶋 真一 (単行本(ソフトカバー))