ts-接口

  1. 通過?定義可有可無的屬性、通過readonly定義只讀屬性
interface per {
    name: String
    age?: Number
    readonly sex: Boolean
}
  1. 定義函數類型

定義函數的入參和返回值, 函數的參數名不需要和接口中參數名一樣,但是類型和順序得一一對應

interface fn {
    (name: String, age: Number): Boolean
}
let foo:fn
foo = function (na:String, age:Number){
    return age>18
}
  1. 索引類型
interface test {
    [i:number]: String
    age: number
    name: string
}
  1. 類類型

描述類的公共屬性和方法

interface cl{
    date: number [] // 定義屬性
    someMethod(par: string) // 定義類的方法

}
class testCl implements cl {
    date = [1,2,3]
    someMethod(str) {
        console.log(str)
    }
}
  1. 繼承接口

如下例子中Square有三個屬性,分別繼承Shape和PenStroke

interface Shape {
    color: string;
}

interface PenStroke {
    penWidth: number;
}

interface Square extends Shape, PenStroke {
    sideLength: number;
}
let Square = <Square>{}
Square.color = 'str'
Square.sideLength = 10
Square.penWidth = 100
  1. 混合類型

既可以定義對象又可以定義函數

interface Counter {
    (start: number): string;
    interval: number;
    reset(): void;
}

function getCounter(): Counter {
    let counter = <Counter>function (start: number) { };
    counter.interval = 123;
    counter.reset = function () { };
    return counter;
}

let c = getCounter();
c(10);
c.reset();
c.interval = 5.0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章