WinRTError: Класс не зарегистрирован

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

 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;
    }
}

1 ответ

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

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 их, чтобы они могли быть видны снаружи этого модуля.

Другие вопросы по тегам