インターフェースへのメソッドの追加
CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部。レッスン 43/73。
TypeScriptのインターフェースを使うと、プロパティ定義とともにメソッドシグネチャを含めることで、これらの動作を定義できます。
インターフェースのメソッドシグネチャは、実際の実装を提供せずに、メソッドの名前、パラメーター、戻り値の型を指定します。これにより、インターフェースに準拠するオブジェクトが満たさなければならない契約が作成されます:
interface Person {
name: string;
age: number;
greet(): string; // メソッドシグネチャ
}
let user: Person = {
name: "Alice",
age: 30,
greet() {
return `Hello, I'm ${this.name}`;
}
};メソッドシグネチャ greet(): string は、Person インターフェースを実装する任意のオブジェクトが、パラメーターを取らず、文字列を返す greet メソッドを持たなければならないことを TypeScript に伝えます。実際の実装はオブジェクトごとに異なる場合がありますが、シグネチャは完全に一致していなければなりません。
チャレンジ
簡単次のプロパティとメソッドを持つ、Calculatorという名前のinterfaceを作成してください:
string型のbrandstring型のmodelboolean型のisScientific- 2つの
numberパラメーターを受け取り、numberを返すaddメソッド - パラメーターを受け取らず、
stringを返すgetInfoメソッド
次のプロパティとメソッドを持つ、BankAccountという名前のinterfaceを作成してください:
string型のaccountNumbernumber型のbalanceboolean型のisActivenumberパラメーターを1つ受け取り、voidを返すdepositメソッド- パラメーターを受け取らず、
numberを返すgetBalanceメソッド
作成したinterfaceを使用して、次の変数を作成してください:
Calculator型で、brandが"Casio"、modelが"FX-991EX"、isScientificがtrueであり、2つのパラメーターの合計を返すaddメソッドと、"[brand] [model]"を返すgetInfoメソッドを持つ、myCalculatorという名前の変数を作成してくださいBankAccount型で、accountNumberが"SAV-12345"、balanceが1500、isActiveがtrueであり、パラメーターをbalanceに加算するdepositメソッドと、現在のbalanceを返すgetBalanceメソッドを持つ、savingsAccountという名前の変数を作成してください
次の出力をそれぞれ別の行に表示してください:
myCalculatorに対してgetInfoメソッドを呼び出し、結果を表示するmyCalculatorに対して、引数15と27を指定してaddメソッドを呼び出し、結果を表示するsavingsAccountに対してgetBalanceメソッドを呼び出し、結果を表示するsavingsAccountに対して、引数250を指定してdepositメソッドを呼び出すsavingsAccountに対して再度getBalanceメソッドを呼び出し、結果を表示するmyCalculatorのisScientificプロパティを表示する
自分で試してみよう
// TODO: ここにコードを書いてください
// 必要なプロパティとメソッドを持つ Calculator インターフェースを作成する
// 必要なプロパティとメソッドを持つ BankAccount インターフェースを作成する
// Calculator 型の myCalculator 変数を作成する
// BankAccount 型の savingsAccount 変数を作成する
// 必要なすべての出力を表示するこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Introduction To TypeScriptのすべてのレッスン
2基本の型
基本の型: str, num, boolean'any' 型: 脱出ハッチ'unknown' 型'null' と 'undef' の扱い型推論の実践明示的な型アノテーションまとめ:基本の型の演習5型:エイリアス、ユニオン型、インターセクション型
プリミティブ型の型エイリアスユニオン型 ('|')ユニオン型の扱い方リテラル型インターセクション型 ('&')型エイリアスの組み合わせまとめ:高度な型の組み合わせ自分で練習してみよう: JavaScriptオンラインコンパイラ