04642e7985
TypeScript introduced a new flag called `noImplicitOverride` as part of TypeScript v4.3. This flag introduces a new keyword called `override` that can be applied to members which override declarations from a base class. This helps with code health as TS will report an error if e.g. the base class changes the method name but the override would still have the old method name. Similarly, if the base class removes the method completely, TS would complain that the memeber with `override` no longer overrides any method. A similar concept applies to abstract methods, with the exception that TypeScript's builtin `noImplicitOverride` option does not flag members which are implemented as part of an abstract class. We want to enforce this as a best-practice in the repository as adding `override` to such implemented members will cause TS to complain if an abstract member is removed, but still implemented by derived classes. More details: https://github.com/microsoft/TypeScript/issues/44457. PR Close #42512
130 lines
3.3 KiB
JSON
130 lines
3.3 KiB
JSON
{
|
|
"rulesDirectory": [
|
|
"tools/tslint",
|
|
"dev-infra/tslint-rules",
|
|
"node_modules/vrsource-tslint-rules/rules",
|
|
"node_modules/tslint-eslint-rules/dist/rules",
|
|
"node_modules/tslint-no-toplevel-property-access/rules"
|
|
],
|
|
"rules": {
|
|
// The first rule needs to be `ts-node-loader` which sets up `ts-node` within TSLint so
|
|
// that rules written in TypeScript can be loaded without needing to be transpiled.
|
|
"ts-node-loader": true,
|
|
// Custom rules written in TypeScript.
|
|
"require-internal-with-underscore": true,
|
|
"no-implicit-override-abstract": true,
|
|
|
|
"eofline": true,
|
|
"file-header": [
|
|
true,
|
|
{
|
|
"match": "Copyright Google LLC",
|
|
"allow-single-line-comments": false
|
|
}
|
|
],
|
|
"no-console": [
|
|
true,
|
|
"log"
|
|
],
|
|
"no-construct": true,
|
|
"no-duplicate-imports": true,
|
|
"no-duplicate-variable": true,
|
|
"no-var-keyword": true,
|
|
"prefer-literal": [
|
|
true,
|
|
"object"
|
|
],
|
|
"no-toplevel-property-access": [
|
|
true,
|
|
"packages/animations/src/",
|
|
"packages/animations/browser/",
|
|
"packages/common/src/",
|
|
"packages/core/src/",
|
|
"packages/elements/src/",
|
|
"packages/forms/src/",
|
|
"packages/platform-browser/src/",
|
|
"packages/router/src/"
|
|
],
|
|
"semicolon": [
|
|
true
|
|
],
|
|
"variable-name": [
|
|
true,
|
|
"ban-keywords"
|
|
],
|
|
"no-inner-declarations": [
|
|
true,
|
|
"function"
|
|
],
|
|
"no-debugger": true,
|
|
"ban": [
|
|
true,
|
|
{"name": "fdescribe", "message": "Don't keep jasmine focus methods."},
|
|
{"name": "fit", "message": "Don't keep jasmine focus methods."}
|
|
]
|
|
},
|
|
"jsRules": {
|
|
// The first rule needs to be `ts-node-loader` which sets up `ts-node` within TSLint so
|
|
// that rules written in TypeScript can be loaded without needing to be transpiled.
|
|
"ts-node-loader": true,
|
|
// Custom rules written in TypeScript.
|
|
"require-internal-with-underscore": true,
|
|
|
|
"eofline": true,
|
|
"file-header": [
|
|
true,
|
|
{
|
|
"match": "Copyright Google LLC",
|
|
"allow-single-line-comments": false
|
|
}
|
|
],
|
|
"no-console": [
|
|
true,
|
|
"log"
|
|
],
|
|
"no-duplicate-imports": true,
|
|
"no-duplicate-variable": true,
|
|
"semicolon": [
|
|
true
|
|
],
|
|
"variable-name": [
|
|
true,
|
|
"ban-keywords"
|
|
],
|
|
"no-inner-declarations": [
|
|
true,
|
|
"function"
|
|
],
|
|
"ban": [
|
|
true,
|
|
{"name": "fdescribe", "message": "Don't keep jasmine focus methods."},
|
|
{"name": "fit", "message": "Don't keep jasmine focus methods."}
|
|
]
|
|
},
|
|
"linterOptions": {
|
|
"exclude": [
|
|
"**/node_modules/**/*",
|
|
// Ignore AIO and integration tests.
|
|
"./aio/**/*",
|
|
"./integration/**/*",
|
|
// Ignore output directories
|
|
"./built/**/*",
|
|
"./dist/**/*",
|
|
"./bazel-out/**/*",
|
|
// Ignore special files
|
|
"**/*.externs.js",
|
|
// Ignore test files
|
|
"./packages/compiler-cli/test/compliance/test_cases/**/*",
|
|
"./packages/localize/**/test_files/**/*",
|
|
"./tools/ts-api-guardian/test/fixtures/**/*",
|
|
"./tools/public_api_guard/**/*.d.ts",
|
|
"./modules/benchmarks_external/**/*",
|
|
// Ignore zone.js directory
|
|
// TODO(JiaLiPassion): add zone.js back later
|
|
"./packages/zone.js/**/*",
|
|
"./dev-infra/ng-dev.js",
|
|
"./dev-infra/build-worker.js"
|
|
]
|
|
}
|
|
}
|