I have an Interface that has a function depending of T which can extends form a string or a number.
interface IConstructorReg<T extends string | number> {
constructor: new (...args: any[]) => BaseImportObj;
check: (data: T, fileName: string) => boolean;
}
I want to push objects that implements that interface.
function checkFun1(data: string, fileName: string) {
// Severals Checkers ...
return true;
}
const objImp1: IConstructorReg<string> = { constructor: ASCReader, check: checkFun1 };
function checkFun2(data: number, fileName: string) {
// Severals Checkers ...
return true;
}
const objImp2: IConstructorReg<number> = { constructor: ASCReader, check: checkFun2 };
const b: Array<IConstructorReg<string | number>> = [];
b.push(objImp1); // Type 'string | number' is not assignable to type 'string'.
b.push(objImp2); // Type 'string | number' is not assignable to type 'number'.
. Which is the correct type of the Array "b"?