Как сделать, попробуйте перехватить и, наконец, утверждения в TypeScript? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть ошибка в моем проекте, мне нужно обработать это с помощью try , catch и finally .Я могу использовать это в JavaScript, но не в Typescript.Когда я помещаю Exception в качестве аргумента в машинописи catch , что не принимает это?вот код.

    private handling(argument: string): string {
    try {
        result= this.markLibrary(argument);
    }
    catch(e:Exception){
        result = e.Message;
    }
    return result;
}

Мне нужно сообщение об исключении здесь, но я не могу получить.И я получил следующую ошибку.

Переменная предложения Catch не может иметь аннотацию типа.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Typescript не поддерживает аннотации к переменной catch.Есть предложение разрешить это, но оно все еще обсуждается (см. здесь )

Ваше единственное решение - использовать утверждение типа или дополнительную переменную

catch(_e){
    let e:Error= _e;
    result = e.message;
}

catch(e){
    result = (e as Error).message;
}

К сожалению, это также будет работать и совершенно не проверено:

catch(e){
    result = e.MessageUps;
}

Примечание

Как вы можете прочитать в обсуждении предложения, в JS не все, чтоБрошенный должен быть Error экземпляр, поэтому остерегайтесь этого предположения

Может быть, tslint с no-unsafe-any поможет поймать это.

0 голосов
/ 12 февраля 2019

Во-первых, вам нужно определить переменную result

let result;

Во-вторых, вы не можете определить тип e - как сказано в сообщении, поэтому в случае, если вы хотите принудительно установить типe, используйте

catch(e){
    result = (e as Exception).Message;
}

или

catch(e){
    result = (<Exception>e).Message;
}

В противном случае, он все равно должен работать, потому что e будет иметь тип any

catch (e) {
    result = e.Message;
}
...