Ts-实现
实现
1、关键字:implements
在ts(js)中,一个class只能继承自另一个class,若其他类中的方法与属性也想继承,则很麻烦。
在ts中可以使用implements来实现一些类 共有方法属性提取。
2、先接口关键字 interface 定义接口,提取出公共方法:
/** IState 接口*/ export interface IState { //方法在进入状态时执行; onEnter(): void; //方法在该状态下时执行; onUpdata(): void; //方法在退出该状态时执行。 onExit(): void; }
3、然后implements实现
/** 站立状态*/ export class IdleState implements IState { private manager: FSM = null!; private parameter: Parameter = null!; private timer: number = 0; public IdleState(manager: FSM) { this.manager = manager; this.parameter = manager.parameter; } public onEnter(): void { } public onExit(): void { this.timer = 0; } public onUpdate(): void { this.timer += Time.deltaTime; if (this.timer >= this.parameter.idleTime) { this.manager.transitionState(StateType.Patrol); } } }
4、新加一个Battery interface,使IdleState 类多次接入。
export interface Battery { fight(): void }
然后实现多个接口实现
/** 站立状态*/
export class IdleState implements IState, Battery {
private manager: FSM = null!;
private parameter: Parameter = null!;
private timer: number = 0;
public IdleState(manager: FSM) {
this.manager = manager;
this.parameter = manager.parameter;
}
fight(): void {
}
public onEnter(): void {
}
public onExit(): void {
this.timer = 0;
}
public onUpdate(): void {
this.timer += Time.deltaTime;
if (this.timer >= this.parameter.idleTime) {
this.manager.transitionState(StateType.Patrol);
}
}
}
5、值得注意的是,接口是可以继承的
interface Battery{ checkBatteryStatus():void; } interface Radio{ switchRadio(trigger:boolean):void; //注意写法,void表示函数有返回值 } interface BatterywithRadio extends Radio{ checkBatteryStatus():void; }
需要注意的问题:
1、继承的类中,是必须有被继承接口的方法的


浙公网安备 33010602011771号