TS之接口:②函數類型接口、索引接口、類類型接口


1.函數接口:

對方法傳入的參數以及返回值進行約束——批量約束(即對函數的輸入參數和輸出結果的約束)

interface encrypt {
  (key: string, value: string): string;
}

// 對傳入的參數以及返回值進行約束
let md1: encrypt = function (key: string, value: string): string {
  return key + value;
}
console.log(md1('張三', '初一一班'));


let md2: encrypt = function (key: string, value: string): string {
  return key + value;
}
console.log(md2('李四', '初二三班'));

 2.可索引接口

對數組、對象的約束

(1)對數組的約束

interface UserArr {
  [index: number]: string
}

let arr: UserArr = ['aaa', '111'];
console.log(arr[1]);

(2)對對象的約束

interface UserObj {
  [index: string]: string
}

let obj: UserObj = { name: '張三', age: '20' }
console.log(obj);

3.類類型接口

對類的約束(和抽象類相似)

interface Animal {
  name: string;

  eat(str: string): void;
}

class Dog implements Animal {
  // 必須包含name
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  // 必須包含eat方法
  eat() {
    console.log(this.name + '吃肉');
  }
}

let d = new Dog('達摩');
d.eat();

4.接口的擴展

接口也是可以繼承的

// 父接口 interface Animal { eat(): void; } // 子接口繼承自父接口 interface Person extends Animal { work(): void; } class Programmer { name: string; constructor(name: string) { this.name = name; } coding() { console.log(this.name + "在寫代碼"); } } 
// 類的繼承和接口的繼承 class Web extends Programmer implements Person { constructor(name: string) { super(name); } // 由於繼承關系,所以這個類必須同時包含父接口和子接口的方法 eat() { console.log(this.name + "在吃飯"); } work() { console.log(this.name + "在工作"); } } let w = new Web('張三'); w.work(); w.eat(); w.coding();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM