export class TBaseModifier {
public static apply<T extends typeof TBaseModifier>(
this: T,
target: entity,
caster: entity = target,
ability?: entity,
CreateInfos?: object,
): InstanceType<T> {
return ...
}
OnCreated: (CreateInfos: object)=>void
}
上面是别人写的,实际上需要对OnCreated得到的参数做出限制。业务中Modifier的OnCreated中申明了什么参数,那么 Modifier.apply的最后一个就需要传什么样的参数。如何才能做好这样的类型钳制呢,大概就是如下的意思,但是我这样写报错了。
export class TBaseModifier<O extends object> {
public static apply<T extends typeof TBaseModifier>(
this: T,
target: entity,
caster: entity = target,
ability?: entity,
CreateInfos: O = {},
): InstanceType<T> {
return ...
}
OnCreated: (CreateInfos: O)=>void
}
试了两天,解决了。