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.
