typescript - Parsningsfel: Uttryck förväntat. eslint
interface Address {
street: string,
}
export const getAddress = (address: Address | null) : string =>
address?.street ? `${address?.street}`
: '0000 Default Dr';
Vet någon om jag får Parsing error: Expression expected. eslint på address i address?.street ? ?
Eslint-regler både för .js och .ts:
{
"extends": [
"plugin:cypress/recommended",
"plugin:@typescript-eslint/recommended"
],
"overrides":
{
"files": ["**/*.{ts,tsx}"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json"
},
"plugins": ["@typescript-eslint", "prettier", "react-hooks", "jsx-a11y"],
"extends": [
"eslint:recommended",
"react-app",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"prettier"
],
"rules": {
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-shadow": "off",
"no-empty-function": 0,
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"no-use-before-define": "off",
"@typescript-eslint/no-use-before-define": ["error"]
},
"settings": {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
},
"import/resolver": {
"typescript": {}
},
"react": {
"version": "detect"
}
}
}
]
}
Svar #1
Det ser ut som att ES-versionen är inställd på standardvärdet. Valfri kedjning (address?.street) är ES2019. Som standard förväntar sig ESLint ECMAScript 5-syntax. Om du vill aktivera ES2019-syntax, lägg till detta i parserOptions: ecmaVersion: '9' (eller '2019') i din eslintrc (länk till dokumentation).
Svar #2
Flera saker kan orsaka detta fel -> länk till artikel
I ditt fall skulle det fungera att deklarera const och variabelexport på olika rader.
Bortsett från vad som nämns i den länkade artikeln, och specifikt för mitt fall, fick jag detta fel när jag kedjade satser utan parenteser och lade till en in-line kommentar i slutet.
Detta var det ursprungliga påstående jag skrev som ger felet:
if (selectedHour < startHour - 1) for (let i = 0; i <= 60; i++) elapsedMinutes.push(i); // disable all minutes
Lösningen var att ta bort kommentaren från slutet och placera den på en separat rad:
// disable all minutes
if (selectedHour < startHour - 1) for (let i = 0; i <= 60; i++) elapsedMinutes.push(i);
