2015-02-05 3 views
0

Я использую машинописные и угловые значения для проекта. Когда я хочу выставить метод сервиса я сделать следующее:Тип машиностроения + метод углового разоблачения

export class MyService implements IService { 

    //Public method 
    public myMethod: Function; 

    public constructor() { 

     this.myMethod= this._myMethod; 

    } 

    private _myMethod(): void { 
     //... 
    } 

Когда я работаю на обслуживание, которые получают много метод, я не придется прокручивать, чтобы увидеть определение метода, так что это здорово. Но теперь, когда я использую метод моей службы в другой службе или контроллере, я не вижу подпись моего метода ... Поэтому я теряю преимущества машинописного текста ...

Любая идея?

Спасибо.

+0

1. Являются методы, перечисленные в интерфейсе 'IService'? 2. Вы объявляете, что введенная служба в контроллере имеет тип 'IService'? –

+0

Нет, в настоящее время я не использую IService. –

+0

Вот почему вы не видите подпись/intellisense. Вы должны указать в своей декларации в DI в контроллере, что ваша служба относится к типу, который вы говорите. –

ответ

1

Простой ответ заключается в том, что вы должны дать ваше определение функции подписи,

class MyService { 
    public myMethod:() => void; //don't use Function 

    constructor() { 
     this.myMethod = this.myMethod; 
    } 

    _myMethod =() => { 

    } 

}

Однако лучший подход заключается в определении интерфейса:

interface IMyService extends IService { 
    myMethod:() => void; 
} 

class MyService implements IMyService { 
    constructor() { 

    } 

    myMethod =() => { 

    } 
} 
Смежные вопросы