私はtypescriptで新しく、typescriptでオプションのプロパティクラスのユーティリティは何ですか?typescriptのオプションのプロパティクラス
a?: number;
a: number | undefined;
私はtypescriptで新しく、typescriptでオプションのプロパティクラスのユーティリティは何ですか?typescriptのオプションのプロパティクラス
a?: number;
a: number | undefined;
オプションのプロパティ:との違いは何です は活字体では、オプションになりますあなたのインターフェイスでプロパティを宣言することができます。あなたは従業員とミドルネームのためのインタフェースはオプションである、あなたのコードは次のようになります持っていると仮定します。
interface IEmployee {
firstName: string;
lastName: string;
middleName?: string;
}
誰かがあなたのインターフェイスIEmployeeを使用する場合は、その後middleNameはオプションになりますが、姓と名が義務です。
let emp: IEmployee = { firstName: "Hohn", lastName: "Doe" }
パイプ演算子: 時々、あなたは変数が複数のタイプを保持できることをしたいです。プロパティを番号として宣言した場合は、番号のみを保持できます。パイプ演算子は、複数の型を保持できることをtypescriptに伝えることができます。パイプ演算子は、関数から何かを返すときに非常に便利で、条件に応じて複数の型を返すことができるその他のケース。
...
は、それが
したがって、タイプの互換性は重要です。同じ例がクラスで正しく動作しますか? – asv
パイプ演算子もクラスで動作しますが、オプションのプロパティはインターフェイス専用です。クラスにはオプションのプロパティの意味はありません。 –
オプションのパラメータの違いを助けることを願っていますし、パラメータの型number | undefined
を使用すると、引数を指定する必要がないということですこれは、関数、メソッド、およびコンストラクタに適用されます。
あなたは厳格なヌルのチェックをオンにした場合は、そのいずれかのオプションのパラメータ、またはプロパティを見つけることができます、自動的に組合の種類を取得します。それはあなただけnumber
を指定していても、以下の例ではid
はタイプnumber | undefined
を有することを意味する:
// With strict null checks, this:
class Example {
id?: number;
}
// ... is the same as this:
class Example {
id?: number | undefined;
}
// ... and this:
class Example {
id: number | undefined;
}
は、私はそれがプロパティとパラメータの間で一貫性のある構文を保つように第1の例を使用することをお勧めします。
https://www.typescriptlang.org/docs/handbook/interfaces.html#optional-propertiesには、使用する場所の例が表示されます – jonrsharpe