2015-05-25 3 views
0

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

module ABC { 
    export class A {  
     public execute<T>(action: string, data?: any, callerContext?: any): IAsyncResult<T> { 
     // CODE:: 
     var requestMessage = new Common.ClientClasses.ClientRequestMessage(); **// **ERROR- "WinRTError: Class not registered"**** 
     requestMessage.requestUri = actionRequest; 
     requestMessage.method = "POST"; 
     requestMessage.body = data ? JSON.stringify(data, null, 2) : null; 
     Common.ClientClasses.ClientRequest.executeAsync(requestMessage) 
     .done((result: Common.ClientClasses.ClientResponeMessage) => { 
      // CODE: 
     } 
     // Code:: 
     } 
    } 
} 

declare module Common.ClientClasses { 
    class ClientRequestMessage { 
     public requestUri: string; 
     public method: string; 
     public body: string; 
    } 

    class ClientResponeMessage { 
     public status: number; 
     public statusText: string; 
     public responseText: string; 
    } 

    class ClientRequest { 
     static executeAsync(clientRequestMessage: ClientRequestMessage): any; 
    } 
} 

ответ

0

Я сделал некоторые улучшения, должны работать:

module ABC { 

    export class A { 

     public execute<T>(action: string, data?: any, callerContext?: any) { 
      var requestMessage = new Common.ClientClasses.ClientRequestMessage(); 
      requestMessage.method = "POST"; 
      requestMessage.body = data ? JSON.stringify(data, null, 2) : null; 
      Common.ClientClasses.ClientRequest.executeAsync(requestMessage) 
     } 

    } 
} 

module Common.ClientClasses { 

    export class ClientRequestMessage { 
     public requestUri: string; 
     public method: string; 
     public body: string; 
    } 

    class ClientResponeMessage { 
     public status: number; 
     public statusText: string; 
     public responseText: string; 
    } 

    export class ClientRequest { 
     static executeAsync(clientRequestMessage: ClientRequestMessage): any { 
      console.log("test"); 
     } 
    } 
} 

Тогда можно запустить следующим образом:

var a = new ABC.A(); 
a.execute("some string"); 

declare module создает файл описания, используемый для Intellisense, но это не делает обеспечить любую реализацию, поэтому я изменил свой код, чтобы этот фрагмент мог работать.

Также, если вы хотите использовать какие-либо классы из модуля, вы должны указать export, чтобы они были видны снаружи этого модуля.

+0

Извините, не работает. Получение такой же ошибки при создании экземпляра той же строки. – Kishor

+0

Невозможно, я проверил его. Вы добавляете экспорт в классы в Common.ClientClasses module? – mjzr

+0

Да, я сделал, но не работает ... – Kishor

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

  • Нет связанных вопросов^_^