I define generic interface with constructor, then implement it but have an error 'TS2420 Type Resetter provides no match for the signature new (defaultValue: (...args: any[]) => T): IResetter<T>'
interface IResetter<T> {
new (defaultValue: (...args: any[]) => T): IResetter<T>;
get (): T;
set (customValue: T);
reset ();
}
class Resetter<T> implements IResetter<T> {
private customValue: T = null;
constructor (private defaultValue: (...args: any[]) => T) { }
public get () {
return this.customValue || this.defaultValue(arguments);
}
public set (customValue) {
this.customValue = customValue;
}
public reset () {
this.customValue = null;
}
}
I don't understand what I did wrong.