export interface AutowiredItem { __autowired: string[]; __AutoGetItem(); } export function Autowire<T extends AutowiredItem>(target: T, key: string) { if (target.__autowired) { target.__autowired.push(key); } else { target.__autowired = [key]; } }