インターフェースと型の拡張
CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部。レッスン 42/73。
コードを重複させる代わりに、TypeScriptは継承を通じて、既存の型に基づいた新しい型を構築するための強力なメカニズムを提供します。
インターフェースでは、extendsキーワードを使用して、ベースとなるインターフェースからすべてのプロパティを継承する新しいインターフェースを作成できます。
interface Vehicle {
brand: string;
year: number;
}
interface Car extends Vehicle {
doors: number;
}
// Carは現在、brand、year、doorsを持っています型エイリアスの場合、& 演算子を使用したインターセクション型を用いることで、同じ結果を得ることができます:
type Vehicle = {
brand: string;
year: number;
};
type Car = Vehicle & {
doors: number;
};
// Carはインターフェースの例と同じプロパティを持ちますどちらのアプローチも、基本型のすべてのプロパティと、定義した追加のプロパティを含む新しい型を作成します。これにより、コードの再利用性が向上し、アプリケーション内の関連する型全体で一貫性を維持するのに役立ちます。
チャレンジ
簡単以下のプロパティを持つ Employee という名前のベースインターフェースを作成してください:
number型のidstring型のnamestring型のdepartment
Employee を継承し、以下のプロパティを追加した Manager という名前のインターフェースを作成してください:
number型のteamSizenumber型のbudget
以下のプロパティを持つ Contact という名前の型エイリアスを作成してください:
string型のemailstring型のphone
交差型(intersection types)を使用して、Employee と Contact を組み合わせ、以下のプロパティを追加した Developer という名前の型エイリアスを作成してください:
string[]型のprogrammingLanguagesnumber型のyearsExperience
作成したインターフェースと型を使用して、以下の変数を作成してください:
Manager型のteamLeadという名前の変数を作成します。プロパティは、id に101、name に"Alice Johnson"、department に"Engineering"、teamSize に8、budget に250000を指定してください。Developer型のsoftwareDevという名前の変数を作成します。プロパティは、id に102、name に"Bob Smith"、department に"Engineering"、email に"bob.smith@company.com"、phone に"555-0123"、programmingLanguages に["TypeScript", "Python", "Java"]、yearsExperience に5を指定してください。
Manager 型のパラメータを受け取り、"[name] manages [teamSize] people with a budget of $[budget]" という形式の string を返す getManagerSummary という名前の関数を作成してください。
Developer 型のパラメータを受け取り、"[name] knows [programmingLanguages joined with ', '] ([yearsExperience] years experience)" という形式の string を返す getDeveloperSkills という名前の関数を作成してください。
以下の出力を別々の行に表示してください:
teamLeadを引数にしてgetManagerSummaryを呼び出し、その結果を表示するsoftwareDevを引数にしてgetDeveloperSkillsを呼び出し、その結果を表示するteamLeadの department を表示するsoftwareDevの email を表示する
自分で試してみよう
// TODO: ここにコードを書いてください
// Employeeインターフェースを作成します
// Employeeを継承するManagerインターフェースを作成します
// Contact型エイリアスを作成します
// 交差型(Intersection Types)を使用してDeveloper型エイリアスを作成します
// Manager型のteamLead変数を作成します
// Developer型のsoftwareDev変数を作成します
// getManagerSummary関数を作成します
// getDeveloperSkills関数を作成します
// 必要な出力を表示しますこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Introduction To TypeScriptのすべてのレッスン
2基本の型
基本の型: str, num, boolean'any' 型: 脱出ハッチ'unknown' 型'null' と 'undef' の扱い型推論の実践明示的な型アノテーションまとめ:基本の型の演習5型:エイリアス、ユニオン型、インターセクション型
プリミティブ型の型エイリアスユニオン型 ('|')ユニオン型の扱い方リテラル型インターセクション型 ('&')型エイリアスの組み合わせまとめ:高度な型の組み合わせ自分で練習してみよう: JavaScriptオンラインコンパイラ