Неожиданный пусть, вместо этого используйте const - PullRequest
0 голосов
/ 24 июня 2019

Я получил no-let правило в tslint конфигурации. Он хочет, чтобы следующая переменная handler была const, даже если она назначена в случае switch. Похоже, ошибка для меня.

static def(name: string) {
    // [tslint]Unexpected let, use const instead (no-let)
    let handler: Function;
    switch (name) {
        case 'test':
            handler = console.error;
            break;
        default:
            handler = console.warn;
    }

    handler(name);
}

Изменение его на const handler: Function приведет к ошибке в tsserver.

    const handler: Function;

    switch (name) {
        case 'test':
            // [tsserver] Cannot assign to 'handler' because it's a constant
            handler = console.error;
            break;

Ответы [ 2 ]

2 голосов
/ 24 июня 2019

Function - это конструктор, как String, Array и т. Д. *

Измените его на

let handler: () => void;

Я использую void, потому что console.error и console.warn return undefined

0 голосов
/ 24 июня 2019

Это не ошибка, константа не может быть переназначена, потому что это константа:

const a = 1;
a = 2; //gonna log same error as your's

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

static def(name: string) {
    switch (name) {
        case 'test':
            return console.error;
        default:
            return console.warn;
    }
}
def("test")("Your message to log as error");
def("nottest")("Your message to log as warning");
...