javascript - Får linting-feil - feil Uventet tomt objektmønster no-empty-pattern
Jeg får denne lint-feilen for koden nedenfor - «error Unexpected empty object pattern no-empty-pattern». Vet noen hvordan man kan løse dette problemet? Det er en tsx-fil.
const stateToProps = ({}, { data = [], filters = {}, staticFilters =
[{}] }) => {
const allFilters = staticFilters ? Object.assign({}, filters, ...staticFilters) : filters;
const newData = getFilteredRows(allFilters, data);
return {
data: newData,
unfilteredData: data,
};
};
//called like this
export const NodeList = connect<{}, {}, CustomNodeTableProps>(stateToProps)(CustomNodeTable);
Svar #1
Jeg kjørte denne koden gjennom ESLint-demoappen etter å ha transpilet TypeScript; linter-feilen kommer fra {} på første linje.
const stateToProps = ({}, // rest of the function
no-empty-pattern er ment å fange kode som ser ut til å bruke destrukturering, men som ikke tildeler noen variabler. I koden ovenfor aksepterer stateToProps et første argument, men uansett hva dette argumentet er, blir det destrukturert som et tomt objekt {} og ingenting blir tildelt.
Hvis det første argumentet har betydning, kan du endre koden for å destrukturere det:
const stateToProps = ({importantThing},
Hvis ikke, angi at vi ikke bryr oss:
const stateToProps = (_,
Eller, sett en standard.
const stateToProps = (importantThing = {},
Hver av disse endringene løser ESLint-advarselen.
Svar #2
I situasjoner uten tomme mønstre som dette har jeg en tendens til å deaktivere lint-regelen for den aktuelle linjen ved å legge til følgende kommentar.
JavaScript:
// eslint-disable-next-line no-empty-pattern
const stateToProps = ({}, otherParams, // rest of the function
...
TypeScript:
// eslint-disable-next-line @typescript-eslint/no-empty-pattern
const stateToProps = ({}, otherParams, // rest of the function
...
Årsaken til dette er først at jeg IKKE vil slå av regelen om ingen tomme mønstre globalt, og for det andre vil jeg heller IKKE samle mange lint-varsler, da dette ville viske ut de viktige varslingene og feilene.
