注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
以下は、プロパティやリンクへのアクセス結果として返される可能性がある undefined
値を処理するための2つの有用なパターンです。
Copied!1 2 3 4 5 6 7 8 9 10
@Function() // 従業員のフルネームを取得する関数 public getFullName(employee: Employee): string { // 従業員の名前と姓が定義されていない場合、エラーをスローする if (!(employee.firstName && employee.lastName)) { throw new UserFacingError("Cannot derive full name because either first or last name is undefined."); } // 従業員の名前と姓を結合してフルネームを返す return employee.firstName + " " + employee.lastName; }
firstName
と lastName
の両フィールドが定義されていることを確認することで、TypeScript コンパイラは最終行の return
ステートメントが正しくコンパイルできることを認識します。このアプローチの利点は、型チェックがより明示的であり、undefined
値が存在する場合に、何が間違っていたのかについてより明確なエラーをスローできることです。
undefined
のケースを無視するために、TypeScript の非 null アサーション演算子 (!
) を使用することができます。
Copied!1 2 3 4 5 6
@Function() // この関数は、従業員のフルネームを返す機能を提供します。 public getFullName(employee: Employee): string { // 従業員の名前と姓を結合してフルネームを作成します。 return employee.firstName! + " " + employee.lastName!; }
このアプローチは単に TypeScript コンパイラをオーバーライドし、アクセスしているフィールドが定義されていることを主張します。これにより、コードがより簡潔になりますが、フィールドの一つが undefined
であることが判明した場合、謎のエラーを引き起こす可能性があります。可能な場合は、明示的なチェックを行うことをお勧めします。