意外的let,请改用const

时间:2019-06-24 09:16:26

标签: typescript tslint

我在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 个答案:

答案 0 :(得分:2)

Function是构造函数,就像StringArray等...

将其更改为

let handler: () => void;

我使用void是因为console.errorconsole.warn返回undefined

答案 1 :(得分:-1)

这不是一个bug,因为它是一个常量,所以不能重新分配一个常量:

>>> d = {'19': ' 01:00', '17': ' 14:00'}
>>> pd.to_datetime(df['date'].str.rsplit('-', 1).apply(lambda x: x[0] + d[x[1]]))
0   2019-03-05 01:00:00
1   2019-03-05 01:00:00
2   2019-03-05 01:00:00
3   2019-03-05 01:00:00
4   2019-03-08 14:00:00
Name: date, dtype: datetime64[ns]
>>> 

为防止这种情况,您可以直接在开关盒上返回结果,例如:

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