1. 程式人生 > 其它 >Linux核心驅動--硬體訪問I/O【轉】

Linux核心驅動--硬體訪問I/O【轉】

屬性檢查

  1. 類介面帶有幾個確定的屬性,同時還會帶有其他不確定的屬性時,可如下定義:
interface SquareConfig {
  color?: string
  width?: number
  [propName: string]: any
}
  1. 使用型別斷言(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