2016-03-23 19 views
2

Derleyici Hatası -Arabirim Uygulamasında Kullanılan Tür Çubuğu Hatası

'MessageBus' sınıfı 'IMessageBus' arabirimini yanlış uygular. 'MessageBus' türünde 'gönderim' eksik. Bu sorunun çözümüyle ilgili

IMessageBus Arayüzü-

export interface IMessageBus { 
    dispatch: (eventName: string, info?: any) => void; 
    listen: (eventName: string, callback: Function) => void; 
} 

MessageBus-Sınıfı

import {IMessageBus} from './IMessageBus'; 

export class MessageBus implements IMessageBus { 
    static listeners: Object[] = []; 
    public static dispatch(event: string, info?: any): void { 
    this.listeners 
     .forEach((l) => { 
      if (l["event"] === event) { 
       l["cb"](info); 
      } 
     }); 
    } 

    public static listen(event:string, cb: (any) => any):void { 
    this.listeners.push({event: event, cb: cb}); 
    } 
} 

Lütfen tavsiyesi.

+0

http://stackoverflow.com/questions/20992514/typescript-0-9-5-how-to-define-an-interface-with-static-members: Ancak daha deyimsel tanım gibi görünecektir -ve-bir-sınıf-tha – shiv

cevap

2

Sana arabirimini uygulayan sınıfta yöntemleri için static anahtar kelimeyi kaldırmak gerektiğini düşünüyorum:

export class MessageBus implements IMessageBus { 
    listeners: Object[] = []; 
    public dispatch(event: string, info?: any): void { 
    this.listeners 
     .forEach((l) => { 
     if (l["event"] === event) { 
      l["cb"](info); 
     } 
     }); 
    } 

    public listen(event:string, cb: (any) => any):void { 
    this.listeners.push({event: event, cb: cb}); 
    } 
} 
+1

Merhaba Thierry, Cevabınız için teşekkürler. Her ne kadar MessageBus'un yeni örneğini oluşturmaya çalışmıyorum. Bu nedenle statik gereksinim. Bu hile yapmalı. http://stackoverflow.com/questions/20992514/typescript-0-9-5-how-to-define-an-interface-with-static-members-and-a-class-tha – shiv

+0

Hey. Problemi görüyorum. Evet, bu soru kesinlikle aradığınız şey. "Sınıfı arabirime atayın" özelliğini bilmiyordum. Ama havalı bir ;-) –

3

Thierry'nin yanıt doğrudur.

Arabiriminiz yanlış tanımlanmadı.

export interface IMessageBus { 
    dispatch(eventName: string, info?: any): void; 
    listen(eventName: string, callback: Function): void; 
} 
İlgili konular