1.接口
(1) ? ----- 可选属性
(2) readonly ----- 只读属性(只能在对象刚刚创建的时候修改其值)
interface Config {
width: number,
height: number,
color? : string,
readonly name: string
}
let config: Config = {width: 20, height: 30, color: "black", name: 'mySquare'}
// config.name = 'mySquare2'; // error!
function createSquare(config: Config): {color: string; area: number} {
let newSquare = {color: "white", area: 100};
// 可选属性使用
if (config.color) {
newSquare.color = config.color;
}
if (config.width && config.height) {
newSquare.area = config.width * config.height;
}
return newSquare;
}
let mySquare = createSquare(config);
2. 实现接口
(1) 接口方法 ----- 必须在继承类实现
interface ShapeConfig {
getArea(): number
}
class Square implements ShapeConfig {
private _width: number;
private _height: number;
constructor (width: number, height: number) {
this._width = width;
this._height = height;
}
public get width() : number {
return this._width
}
public get height() : number {
return this._height
}
getArea(): number {
return this.width * this.height
}
}
let square = new Square(20, 30);
let area = square.getArea();
console.log(area) // 600
3. 继承接口
(1) 接口继承 --- 接口可多继承
interface SquareConfig extends ShapeConfig, Config{
shape: string
}
let squareConfig = <SquareConfig> {};
squareConfig.shape = 'Square';
squareConfig.color = 'red';
4. 接口继承类
(1) 接口继承了一个类类型时,它会继承类的成员但不包括其实现