Kan typescript-eslint naming-convention tillate tall?


Jeg har nylig oppdatert min @typescript-eslint/eslint-plugin og @typescript-eslint/parser fra 5.9.1 til 5.38.1, og det har ført til at eslint . begynner å klage på at rent numeriske objektindekser ikke er tillatt i koden min. Finnes det en måte å konfigurere ESLint på for å håndheve en konvensjon, men uten å ekskludere tall?

REDIGER: advarselen ser ut til kun å vises når numeriske indekser ikke er i hakeparenteser, som i eksemplet nedenfor. Så selve fiksen i koden virker enkel nok - bare legg til hakeparenteser rundt alle konstanter - men det hadde vært bra om ESLint reagerte konsekvent!

Min .eslintrc inneholder følgende:

'@typescript-eslint/naming-convention': ['warn', {
    'selector': 'property',
    'format': ['strictCamelCase']
}],

Jeg skulle ønske jeg kunne ha et objekt (for eksempel i en testfil) som:

{
    0: true,         // should be accepted; currently raises a warning
    8: false,        // should be accepted; currently raises a warning
    [12]: true,      // accepted
    "foo": "bar",    // accepted
    "foo-bar": "baz" // should cause a warning because not strictCamelCase
}

De ovennevnte numeriske indeksene gir følgende feil:

warning  Object Literal Property name `3` must match one of the following formats: strictCamelCase  @typescript-eslint/naming-convention

Svar #1

Jeg klarte å få de forventede resultatene ved å bruke filter-egenskapen som er beskrevet i regelen.

'@typescript-eslint/naming-convention': ['warn', {
    'selector': 'property',
    'format': ['strictCamelCase'],
    'filter': { 'regex': '\\d+', 'match': false }
}],

DEMO

Ideen er å utelukke eiendomsnavn som kun består av sifre fra å bli sjekket mot camelkasseformatet. Mønsteret '\\d+' matcher bare-siffer-identifikatorer som krevd.

Relaterte artikler