これは私が何をしようとしているのがより簡単な例です:クラスを使用してJSONオブジェクトをタイプコピー型の変数にキャストする正しい方法はありますか?
export class Person{
id:Number;
name:String;
}
export class PersonForm{
// This line:
default:Person = {name: "Guy"};
// Gives the following error:
// Error:(25, 5) TS2322: Type '{ name: string; }' is not assignable to type 'Person'.
// Property 'id' is missing in type '{ name: string; }'.
// I tried <Person>{name: "Guy"} but it gives the same error.
}
どのように私は、コンパイラは限りイムは、非existantプロパティを使用していないとして、この問題を無視することができ、またはどのように私はクラスを宣言しますだから私は新しいPerson()の代わりにこのように割り当てを行い、次に私が望むプロパティを設定することができます。
注:すべてのプロパティを持つオブジェクトをコンストラクタに送信することは、私が期待している解決策ではありません。私はオプションのフィールドを宣言することができるので、インターフェイスを使用しても、私はクラスで同じことを行うことができますか?クラス(ないインターフェイス)を宣言するための最良の方法を探す
ので、私はきれいなコードでそれを初期化することができます:私が達成しようとしているものの
主な目標:
は、いくつかのより多くの情報を追加します設定したいパラメータだけを1行に設定します。 Javaでは、コンストラクタをオーバーロードするか、Builderパターンを使用します。
私は確かにビルダーパターンを試すことができましたが、もしあれば、より多くのタイプスクリプトの方法を探しています。
このシナリオでは、インタフェースを使用してと間違って何?最高のフィット感のようです。 – toskv
あなたのオプションは、オプションのプロパティを持つインターフェイスを作成し、クラスがインターフェイスを実装するか、またはコンストラクタパラメータとしてインターフェイスを受け入れるようにすることだと思います。現時点では、あなたが望むことをする方法はありませんが、[他の人は](https://github.com/Microsoft/TypeScript/issues/4889)それについて質問しました。 –
代わりに、クラスのコンストラクタを作成してヌルパラメータで呼び出すこともできます。ただし、この場合でもインタフェースはさらに優れています。 – toskv