[解決済み] TypeScriptでプロパティを持つ関数オブジェクトを作成する
2022-08-03 10:46:34
質問
関数オブジェクトを作成し、それにいくつかのプロパティを持たせたいと考えています。例えば、JavaScriptで私はそうします。
var f = function() { }
f.someValue = 3;
これでTypeScriptでは、このように型を記述できるようになりました。
var f: { (): any; someValue: number; };
しかし、私は実際にそれを構築することはできません、キャストを必要とせずに。こんな感じ。
var f: { (): any; someValue: number; } =
<{ (): any; someValue: number; }>(
function() { }
);
f.someValue = 3;
キャストなしでどうやって作るんだ?
どのように解決するのですか?
そこで、キャストなしで単純にビルドしてその関数を "f" に割り当てることが要件である場合、考えられる解決方法は以下のとおりです。
var f: { (): any; someValue: number; };
f = (() => {
var _f : any = function () { };
_f.someValue = 3;
return _f;
})();
基本的に、これは自己実行型の関数リテラルを使用して、代入が行われる前にそのシグネチャにマッチするオブジェクトを構築"します。唯一の奇妙な点は、関数の内部宣言が 'any' 型である必要があり、そうでなければコンパイラは、まだオブジェクトに存在しないプロパティに代入していると叫ぶことです。
EDIT: コードを少し簡略化しました。
関連
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScriptでオブジェクトに動的にプロパティを割り当てるには?
-
[解決済み] JSONオブジェクトをTypeScriptのクラスにキャストする方法を教えてください。
-
[解決済み] Typescript によるインターフェース型チェック
-
[解決済み] TypeScriptのファイルをコマンドラインから実行するには?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み】タイプスクリプト - オブジェクトのクローンを作成する
-
[解決済み】TypeScriptまたはJavaScriptのタイプキャスト
-
[解決済み] TypeScriptの自由形式関数引数
-
[解決済み】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 実装 サイバーパンク風ボタン