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つの属性ではコンパイルエラーにならない。

参考

ビジネスダッシュボード 設計・実装ガイドブック 成果を生み出すデータと分析のデザイン
[ad] ビジネスダッシュボード 設計・実装ガイドブック 成果を生み出すデータと分析のデザイン
トレジャーデータ, 池田 俊介 (単行本(ソフトカバー))