Linux核心驅動--硬體訪問I/O【轉】
阿新 • • 發佈:2021-11-06
屬性檢查
- 類介面帶有幾個確定的屬性,同時還會帶有其他不確定的屬性時,可如下定義:
interface SquareConfig {
color?: string
width?: number
[propName: string]: any
}
- 使用型別斷言(as)跳過檢查
let mySquare = createSquare({ width: 100, opacity: 0.5 } as SquareConfig)
可索引的型別
interface StringArray { [index: number]: string } let myArray: StringArray myArray = ['Bob', 'Fred'] let myStr: string = myArray[0]
這個索引簽名表示了當用 number 去索引 StringArray 時會得到 string 型別的返回值。
函式型別
interface SearchFunc {
(source: string, subString: string): boolean;
func1(arg1: string, arg2: any): void;
func2(arg1: number, arg2?: boolean): number;
}
類型別
實現介面
介面描述了類的公共部分,而不是公共和私有兩部分。
interface ClockInterface { currentTime: Date setTime(d: Date) } class Clock implements ClockInterface { currentTime: Date setTime(d: Date) { this.currentTime = d } constructor(h: number, m: number) { } }
類靜態部分與例項部分
interface ClockConstructor { new (hour: number, minute: number): ClockInterface } interface ClockInterface { tick() } function createClock(ctor: ClockConstructor, hour: number, minute: number): ClockInterface { return new ctor(hour, minute) } class DigitalClock implements ClockInterface { constructor(h: number, m: number) { } tick() { console.log('beep beep') } } class AnalogClock implements ClockInterface { constructor(h: number, m: number) { } tick() { console.log('tick tock') } } let digital = createClock(DigitalClock, 12, 17) let analog = createClock(AnalogClock, 7, 32)
createClock 的第一個引數是 ClockConstructor 型別,在 createClock(AnalogClock, 7, 32) 裡,會檢查 AnalogClock 是否符合建構函式簽名。
繼承介面
interface Shape {
color: string
}
interface PenStroke {
penWidth: number
}
interface myColor extends Shape {
fontSize: number
}
interface Square extends Shape, PenStroke {
sideLength: number
}
let square = {} as Square
square.color = 'blue'
square.sideLength = 10
square.penWidth = 5.0