type Constructor = new(...args: TA[]) => T; type ExtendTypeWith, OtherObject extends object> = Constructor & OtherObject, ConstructorParameters>; type Dictionary = {[key: string]: TYPE}; interface Extendable { [key: string]: any; }