1. 程式人生 > >typescript介面定義

typescript介面定義

介面描述:

介面的使用,這裡講的是介面的使用 (其實就是定義一些規定)


介面定義

interface Accountable{
  getIncome():number;
}

介面實現

如果實現了一個指定的介面,那麼必須實現這個接口裡面多定義的所有方法,這些方法的實現必須與介面定義裡面的簽名完全一致。

class Firm implements Accountable{
  getIncome():number {
    //...
  }
}

ts介面也支援定義屬性,如我們可以在上述介面中引入一個名為accountNumber的欄位,型別為string:

interface Accountable{
  accountNumber: string;
  getIncome(): number;
}

可以在類裡面把accountNumber定義成一個欄位或者一個getter。


介面繼承

介面之間可以互相繼承:

interface Firm extends Accountable {
  ssn: string;
}

介面還支援多繼承:

interface Accountable {
  accountNumber: string;
  getIncome(): number;
}
interface Human {
  age: number;
  name: number;
}
interface Firm extends Accountable,Human{
  ssn: string;
}

實現多個介面

如果類的行為是很多介面中定義的行為的並集,那麼類可以實現所有這些介面:

class Person implements Human,Accountable {
  age: number;
  name: string;
  accountNumber: string;
  getIncome(): number {
    //...
  }
}

介面例項

//資料介面
interface Learn{
  sex:string,
  infer:string,
  ha?:Boolean,  //可選引數
}


//函式介面
interface Say{
  (name:string,sex:string):boolean;
}

let le:Learn = {sex:'man',infer:'histroy',ha:true};
let say:Say;

say = function(name:string,sex:string):boolean{
  let flag = name.search(sex);
  return (flag != -1)

}

console.log(le);
console.log(say('高、富、帥、錢','窮'));

注意點:

  1. 只能給介面內部的定義的資料賦值
  2. 定義函式介面的話,返回值必須和介面定義的返回值型別一致