現在、JavaScriptモジュールをTypeScriptに移行しています。オプションの属性を持つオブジェクトを強く入力すると問題が発生します。オプションの属性を使用してクラスをインスタンス化する正しい方法
例は単純です:
私はモーダルを開くメソッドを持っています。メソッドには単一のパラメータがあり、これはモーダルのさまざまなオプションのマップであり、すべてオプションです。 JavaScriptで同様
:
openConfirmDialog({text : "are you sure ?"});
openConfirmDialog({title : "Confirmation required", confirmAction : noop});
のように。活字体への移行
は、私はすべてのこれらの異なるオプションを表すクラスを宣言:
class ConfirmDialogOptions {
text : string;
title : string;
confirmAction :() => any;
cancelAction :() => any;
}
しかし、我々は、プレーンJavaScriptでに使用されるように、このクラスをインスタンス化しようとしている:
let confirmOptions : ConfirmDialogOptions = { text : "are you sure ?" };
コンパイラの昇給エラー:
Initialized type not assignable to variable type ConfirmDialogOptions
そして、私は強制的にタイプの鋳鉄使用したG:
let a : ConfirmDialogOptions = {text: "lala"} as ConfirmDialogOptions;
これは動作しますが、まあ、それは過熱のような一種のようで、全体的に私は活字体の多くまたはすべてのオプションのプロパティを持って入力されたオブジェクトをインスタンス化するための正しいアプローチであるものを思ってしまいます。
正しいアプローチは何ですか?