day166-TypeScript基础小记-继承(接口)

要点

  1. 继承接口。
  2. 一个接口继承多个接口,创建出多个接口的合成接口。
  3. 接口继承类。

继承接口

interface Shape {
color: string
}
interface Square extends Shape {
sideLength: number
}
let square = <Square>{}
square.color = 'red'
square.sideLength = 6

继承多接口|合成接口

一个接口继承多个接口,创建出多个接口的合成接口。

interface Shape {
color: string
}
interface PenStroke {
penWidth: number
}
interface Square extends Shape, PenStroke {
sideLength: number
}
let square = <Square>{}
square.color = 'red'
square.sideLength = 9
square.penWidth = 5.0

对象“多类型”

一个对象同时具有多种类型

interface Counter {
(start: number): string
interval: number
reset(): void
}
function getCounter(): Counter {
let counter = <Counter>function (start: number): string { return '' }
counter.interval = 123
counter.reset = function () {}
return counter
}
let c = getCounter()
c(10)
c.reset()
c.interval = 5.0

接口继承类

接口继承一个类类型时,它会继承类的成员但不包括其实现。(大概就是:接口能声明所有类中存在的成员,但是不提供具体实现
SelectableControl包含了Control的所有成员,包括私有成员state
即:当接口继承了一个拥有私有成员受保护成员的类时,这个接口类型只能是被这个类或其子类所实现。

SelectableControl包含了Control的所有成员,包括私有成员state
因为state是私有成员,只能Control的子类才能实现SelectablControl接口。

class Control {
private state: any
}
interface SelectableControl extends Control {
select(): void
}
class Button extends Control implements SelectableControl {
select() { }
}
class TextBox extends Control {
select() { }
}
class Image implements SelectableControl {
select() { }
}
class Location {
}

参考

文章作者: lmislm
文章链接: http://lmislm.com/2019/06/28/2019-06-28/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog