export interface Constructor { new (...args: any[]): T; } export interface AbstractType extends Function { prototype: T; } export type Token = Constructor | AbstractType | string;