UNPKG

eslint-config-ts-strict

Version:

Very strict ESLint config for projects using TypeScript, React and Prettier. ESLint v9 flat config only. Formatting rules disabled to prevent Prettier conflicts.

194 lines (164 loc) 5.95 kB
export default { rules: { // enforces no braces where they can be omitted // https://eslint.org/docs/rules/arrow-body-style // TODO: enable requireReturnForObjectLiteral? "arrow-body-style": [ "error", "as-needed", { requireReturnForObjectLiteral: false, }, ], // require parens in arrow function arguments // https://eslint.org/docs/rules/arrow-parens // PRETTIER CONFLICT: This rule conflicts with Prettier formatting "arrow-parens": "off", // require space before/after arrow function's arrow // https://eslint.org/docs/rules/arrow-spacing // PRETTIER CONFLICT: This rule conflicts with Prettier formatting "arrow-spacing": "off", // verify super() callings in constructors "constructor-super": "error", // enforce the spacing around the * in generator functions // https://eslint.org/docs/rules/generator-star-spacing // PRETTIER CONFLICT: This rule conflicts with Prettier formatting "generator-star-spacing": "off", // disallow modifying variables of class declarations // https://eslint.org/docs/rules/no-class-assign "no-class-assign": "error", // disallow arrow functions where they could be confused with comparisons // https://eslint.org/docs/rules/no-confusing-arrow "no-confusing-arrow": [ "error", { allowParens: true, }, ], // disallow modifying variables that are declared using const "no-const-assign": "error", // disallow symbol constructor // https://eslint.org/docs/rules/no-new-symbol "no-new-symbol": "error", // Disallow specified names in exports // https://eslint.org/docs/rules/no-restricted-exports "no-restricted-exports": [ "error", { restrictedNamedExports: [ "default", // use `export default` to provide a default export "then", // this will cause tons of confusion when your module is dynamically `import()`ed, and will break in most node ESM versions ], }, ], // disallow to use this/super before super() calling in constructors. // https://eslint.org/docs/rules/no-this-before-super "no-this-before-super": "error", // disallow useless computed property keys // https://eslint.org/docs/rules/no-useless-computed-key "no-useless-computed-key": "error", // disallow renaming import, export, and destructured assignments to the same name // https://eslint.org/docs/rules/no-useless-rename "no-useless-rename": [ "error", { ignoreDestructuring: false, ignoreImport: false, ignoreExport: false, }, ], // require let or const instead of var "no-var": "error", // require method and property shorthand syntax for object literals // https://eslint.org/docs/rules/object-shorthand "object-shorthand": [ "error", "always", { ignoreConstructors: false, avoidQuotes: true, }, ], // suggest using arrow functions as callbacks "prefer-arrow-callback": [ "error", { allowNamedFunctions: false, allowUnboundThis: true, }, ], // suggest using of const declaration for variables that are never modified after declared "prefer-const": [ "error", { destructuring: "any", ignoreReadBeforeAssign: true, }, ], // Prefer destructuring from arrays and objects // https://eslint.org/docs/rules/prefer-destructuring "prefer-destructuring": [ "error", { VariableDeclarator: { array: false, object: true, }, AssignmentExpression: { array: true, object: false, }, }, { enforceForRenamedProperties: false, }, ], // disallow parseInt() in favor of binary, octal, and hexadecimal literals // https://eslint.org/docs/rules/prefer-numeric-literals "prefer-numeric-literals": "error", // suggest using Reflect methods where applicable // https://eslint.org/docs/rules/prefer-reflect "prefer-reflect": "off", // use rest parameters instead of arguments // https://eslint.org/docs/rules/prefer-rest-params "prefer-rest-params": "error", // suggest using the spread syntax instead of .apply() // https://eslint.org/docs/rules/prefer-spread "prefer-spread": "error", // suggest using template literals instead of string concatenation // https://eslint.org/docs/rules/prefer-template "prefer-template": "error", // disallow generator functions that do not have yield // https://eslint.org/docs/rules/require-yield "require-yield": "error", // enforce spacing between object rest-spread // https://eslint.org/docs/rules/rest-spread-spacing // PRETTIER CONFLICT: This rule conflicts with Prettier formatting "rest-spread-spacing": "off", // import sorting // https://eslint.org/docs/rules/sort-imports "sort-imports": [ "off", { ignoreCase: false, ignoreDeclarationSort: false, ignoreMemberSort: false, memberSyntaxSortOrder: ["none", "all", "multiple", "single"], }, ], // require a Symbol description // https://eslint.org/docs/rules/symbol-description "symbol-description": "error", // enforce usage of spacing in template strings // https://eslint.org/docs/rules/template-curly-spacing // PRETTIER CONFLICT: This rule conflicts with Prettier formatting "template-curly-spacing": "off", // enforce spacing around the * in yield* expressions // https://eslint.org/docs/rules/yield-star-spacing // PRETTIER CONFLICT: This rule conflicts with Prettier formatting "yield-star-spacing": "off", // New rules still not included "no-empty-static-block": "off", "no-new-native-nonconstructor": "off", }, };