2017-12-22 40 views
-1

私はtypescriptで新しく、typescriptでオプションのプロパティクラスのユーティリティは何ですか?typescriptのオプションのプロパティクラス

a?: number; 

a: number | undefined; 
+0

https://www.typescriptlang.org/docs/handbook/interfaces.html#optional-propertiesには、使用する場所の例が表示されます – jonrsharpe

答えて

1

オプションのプロパティ:との違いは何です は活字体では、オプションになりますあなたのインターフェイスでプロパティを宣言することができます。あなたは従業員とミドルネームのためのインタフェースはオプションである、あなたのコードは次のようになります持っていると仮定します。

interface IEmployee { 
    firstName: string; 
    lastName: string; 
    middleName?: string; 
} 

誰かがあなたのインターフェイスIEmployeeを使用する場合は、その後middleNameはオプションになりますが、姓と名が義務です。

let emp: IEmployee = { firstName: "Hohn", lastName: "Doe" } 

パイプ演算子: 時々、あなたは変数が複数のタイプを保持できることをしたいです。プロパティを番号として宣言した場合は、番号のみを保持できます。パイプ演算子は、複数の型を保持できることをtypescriptに伝えることができます。パイプ演算子は、関数から何かを返すときに非常に便利で、条件に応じて複数の型を返すことができるその他のケース。

​​

...

は、それが

+0

したがって、タイプの互換性は重要です。同じ例がクラスで正しく動作しますか? – asv

+0

パイプ演算子もクラスで動作しますが、オプションのプロパティはインターフェイス専用です。クラスにはオプションのプロパティの意味はありません。 –

0

パラメータ

オプションのパラメータの違いを助けることを願っていますし、パラメータの型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の例を使用することをお勧めします。

関連する問題