import { LeafTask } from "../base"; import { TaskStatus } from "../TaskStatus"; type ActionTaskStart = (data: T) => void; type ActionTaskExecute = (data: T) => TaskStatus; export class ActionTask extends LeafTask { private startFn?: ActionTaskStart; private executeFn: ActionTaskExecute; public constructor(fn: { start?: ActionTaskStart, execute: ActionTaskExecute, }) { super(); this.startFn = fn.start; this.executeFn = fn.execute; } public start(): void { super.start(); const data = this.getObject(); this.startFn && this.startFn(data); } public execute(): TaskStatus { const data = this.getObject(); return this.executeFn(data); } }