[解決済み】TypeScriptの関数のオーバーローディング
2022-03-26 07:45:18
質問
TypeScript言語仕様の6.3項では、関数のオーバーロードについて述べており、その実装方法について具体的な例を挙げています。 しかし、このようなことを試すと
export class LayerFactory {
constructor (public styleFactory: Symbology.StyleFactory) { }
createFeatureLayer (userContext : Model.UserContext, mapWrapperObj : MapWrapperBase) : any {
throw "not implemented";
}
createFeatureLayer(layerName : string, style : any) : any {
throw "not implemented";
}
}
関数のパラメータが異なる型であるにもかかわらず、識別子が重複しているというコンパイラーエラーが発生します。 2番目のcreateFeatureLayer関数にパラメータを追加しても、コンパイラーエラーが発生します。 アイデアをお願いします。
解決方法は?
これは、両方の関数がJavaScriptにコンパイルされたとき、そのシグネチャがまったく同じになるためと思われます。JavaScriptには型がないので、同じ数の引数を取る関数を2つ作ってしまうことになる。そこで、TypeScriptでは、このような関数を作らないように制限している。
TypeScriptは、パラメータの数に応じたオーバーロードをサポートしていますが、OO言語と比較すると、踏むべき手順が少し異なります。別のSOの質問に対する回答として、ある人が素敵な例で説明してくれています。 メソッドのオーバーロード? .
基本的には、TypeScriptがコンパイルエラーを出さないように、1つの関数といくつかの宣言を作成しています。このコードがJavaScriptにコンパイルされると、具象関数だけが見えるようになる。JavaScriptの関数は複数の引数を渡して呼び出すことができるため、そのまま動作します。
関連
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み】ブロックスコープ付き変数の再宣言ができない(typescript)
-
[解決済み] Jest で typescript を使用して identity-obj-proxy を使用すると未定義が返される
-
[解決済み] Typescript コンパイルエラー: error TS1109: 期待される式
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] グローバル定数の定義
-
[解決済み] TypeScriptの「as const」の意味とその使用例とは?
-
[解決済み] TypeScriptのsetTimeoutはどのような戻り値型を使用すればよいですか?
-
[解決済み] メインとテストのコンパイルを分離するために、typescriptコンパイラ(tsc)のオプションはどのように設定するのが正しいのでしょうか?
-
[解決済み] クラスのプロパティが整数であることはどのように指定するのですか?
-
[解決済み】TypeScriptの関数のオーバーローディング
-
[解決済み】文字列の値を持つenumの作成
-
[解決済み】ブロックに`@ts-ignore`を使用するには?
-
[解決済み】引数として渡されたTypeScriptオブジェクトにデフォルト値を設定する
-
[解決済み] TypeScriptでメソッドのオーバーローディングをする方法はありますか?