Typescript - Как использовать интерфейс в функции обратного вызова - PullRequest
0 голосов
/ 29 мая 2019

Недавно начал использовать Typescript и что-то, в чем я не уверен.

Я использую пакет npm azure-storage и специально вызываю метод doesBlobExist:

blobService.doesBlobExist(containerName, blobName, (callbackResult: ErrorOrResult<BlobService.BlobResult>) => {
        //Want callbackResult.response here
});

ЭтоdoesBlobExist (функция из пакета npm) выглядит следующим образом:

doesBlobExist(container: string, blob: string, callback: ErrorOrResult<BlobService.BlobResult>): void;

И тип ErrorOrResult - это интерфейс, который имеет это:

interface ErrorOrResult<TResult> {
    (error: Error, result: TResult, response: ServiceResponse): void
}

В чем я не уверенгде я вызываю функцию, я надеялся, что смогу использовать этот интерфейс и сделать:

callbackResult.response, как в интерфейсе, однако callbackResult продолжает возвращаться как null.Если посмотреть на него, он будет установлен как error: Error из интерфейса.

Так возможно ли на самом деле делать то, что я хочу выше, или мне нужно использовать эту функцию как:

blobService.doesBlobExist(containerName, blobName, (error, result, response) => {
        //i.e. specify the 3 items directly in the interface
});

1 Ответ

0 голосов

читая вашу проблему, вы можете использовать решение, которое вы написали выше, вы можете сделать что-то похожее на:

blobService.doesBlobExist(containerName, blobName, (error, result, response) => {
        if(error !== null){
           // Do something
           return;
        } 
        // here you can work with your response data
});

Если вы хотите избежать ошибки, вы можете пропустить цикл if и работать напрямую сваш ответ, но вы должны вставить все возможные параметры в ответ.

callbackResult.response, как в интерфейсе, однако callbackResult продолжает возвращаться как ноль.При просмотре он устанавливается как ошибка: Ошибка интерфейса.

Как вы сказали, вы получаете ноль, потому что функция не возвращает ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...