接口
interface LabelledValue {
label: string;
}
function printLabel (labelledValue: LabelledValue): LabelledValue {
console.log(labelledValue.label);
return labelledValue;
}
let myObj = {
size: 10,
label: 'Size 10 Object'
};
printLabel(myObj);
可选属性
interface SquareConfig {
color?: string;
width?: number;
}
只读属性
interface Point {
readonly x: number;
readonly y: number;
}
let arr: number[] = [1, 2, 3, 4];
let readOnlyArr: ReadonlyArray<number> = arr;
arr = readOnlyArr as number[];
额外的属性检查
interface SquareConfig {
color?: string;
width?: number;
[propName: string]: any;
}
函数类型
interface SearchFunInterFace {
(source: string, subString: string): boolean;
}
let searchFun: SearchFunInterFace = function (source, subString) {
let result = source.search(subString);
return result > -1;
}
可索引类型
interface ArrStrInterface {
readonly [index: number]: string;
}
let arrStr: ArrStrInterface = ['Bob', 'Bill'];
类类型
interface ClockInterfaceA {
currentTime: Date;
setTime(d: Date);
}
class Clock implements ClockInterfaceA {
currentTime: Date;
constructor(h: number, m: number) {}
setTime(date: Date) {
this.currentTime = date;
}
}
interface ClockConstructorInterface {
new (hour: number, minute: number): ClockInterfaceB;
}
interface ClockInterfaceB {
tick();
}
function createClock(ctor: ClockConstructorInterface, hour: number, minute: number): ClockInterfaceB {
return new ctor(hour, minute);
}
class DigitalClock implements ClockInterfaceB {
constructor(h: number, m: number) { }
tick() {
console.log("beep beep");
}
}
let digital = createClock(DigitalClock, 12, 17);
digital.tick();
继承接口
interface Shape {
color: string;
}
interface PenStroke {
penWidth: number;
}
interface Square extends Shape, PenStroke {
sideLength: number;
}
混合类型
interface Counter {
(start: number): string;
interval: number;
reset(): void;
}
接口继承类
class Control {
private state: any;
}
interface SelectableControl extends Control {
select(): void;
}
class Button extends Control implements SelectableControl {
select() { }
}