[解決済み] TypeScriptの静的クラス
2022-03-07 19:39:52
質問
C#のような構文が好きなので、従来のJSからTypeScriptに移行したいと思いました。 問題は、TypeScriptで静的クラスを宣言する方法がわからないことです。
C#では、変数やメソッドを整理するために静的クラスを使うことが多く、オブジェクトをインスタンス化することなく、名前付きのクラスにまとめています。 バニラJSでは、単純なJSオブジェクトでこれをやっていました。
var myStaticClass = {
property: 10,
method: function(){}
}
TypeScriptでは、私はむしろC-sharpyのアプローチに行きたいのですが、TSでは静的クラスが存在しないようです。 この問題に対する適切な解決策は何でしょうか?
どのように解決するのですか?
TypeScriptはC#ではないので、C#と同じ概念をTypeScriptに必ずしも期待しないほうがよいでしょう。問題は、なぜ静的クラスが必要なのか、ということです。
C#では、静的クラスは単にサブクラス化できないクラスであり、静的メソッドのみを含まなければなりません。C#では、クラスの外側に関数を定義することはできません。しかし、TypeScriptではそれが可能だ。
もし関数やメソッドをネームスペースに置く(つまりグローバルではない)方法を探しているなら、TypeScriptのモジュールを使うことを検討するといいだろう。
module M {
var s = "hello";
export function f() {
return s;
}
}
そのため、M.f()には外部からアクセスできますが、sにはアクセスできず、モジュールを拡張することはできません。
参照:TypeScript 仕様 を参照してください。
関連
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] JavaScriptの静的変数
-
[解決済み】TypeScriptのインターフェースと型について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools