2016-01-14 3 views
0

Я хочу, чтобы автоматически инициализировать класс, когда конкретный декоратор присутствует выше класса, например:класс инициализации с помощью машинописи декораторов

@apiController 
export class usersControllers extends lib.baseClasses.apiControllerBase().apiController { 
    @lib.decorators.routesRegister().register({ "url": "/login","isLoginUrl":true}) 
    public postLoginUser($data) { 
     let userDetails = { 
      name: 'pranay dutta', 
      userType: '1', // must 
      age: '26', 
      tokenExpiry:5000000 // must 
     }; 

     setTimeout(() => { 
      this.ok(userDetails); 
     }, 100); 

     return this.promise; 
    } 
} 

В приведенном выше примере, когда я использую @apiController декоратора это должен automatially initilziae класс для меня, пожалуйста, помогите мне с вопросом

+3

Что вы пробовали? Если вы ищете документацию, то https://github.com/Microsoft/TypeScript/issues/2249 является хорошим источником информации. –

+0

Что вы подразумеваете под словом «инициализировать класс»? Является ли это инициализацией своих статических полей? – Amid

+0

он должен сделать что-то вроде «new usersControllers()» –

ответ

1

Я хотел бы сделать что-то вроде

function apiController(target: any) 
{ 
    let obj = new target.constructor(); 
} 

UPDATE. Чтобы заставить декораторов стрелять, я использую следующий трюк. Добавить фиктивную функцию в том же модуле, как это:

export function Seed() { } 

, а затем просто вызвать его в ИНИЦИАЛИЗИРУЙТЕ подпрограмм или вашей системы. Это заставит всех декораторов из этого модуля загореться.

+0

Эта функция не будет вызываться до тех пор, пока я не инициализирую класс один раз –

+0

Не совсем. Его достаточно, чтобы принудительно загрузить соответствующий модуль. Для этого я обычно добавляю фиктивную функцию в том же модуле: Функция экспорта Seed() {} , а затем просто вызывайте его в процедурах инициализации или в вашей системе. Это заставит всех декораторов стрелять – Amid

+0

, можете ли вы отредактировать ответ с помощью фиктивной функции –