More rules for TSLint

1.7.0  •  Updated 7 months ago  •  by Nicholas Jamieson  •  MIT License

GitHub License NPM version Downloads Build status dependency status devDependency Status peerDependency Status Greenkeeper badge

What is it?

tslint-etc is set of TSLint rules to enforce policies that cannot be specified - or easily specified - with the built-in rules.


Install the package using NPM:

npm install tslint-etc --save-dev

Update your tslint.json file to extend this package and add any rules you want to configure to the rules object:

  "extends": [
  "rules": {
    "throw-error": { "severity": "error" }


WARNING: Before configuring any of the following rules, you should ensure that TSLint’s no-unused-variable rule is not enabled in your configuration (or in any configuration that you extend). That rule has caused problems in the past - as it leaves the TypeScript program in an unstable state - and has a significant number of still-open issues. Consider using this package’s no-unused-declaration rule instead.

The package includes the following rules (none of which are enabled by default):

Rule Description Fixer Options
ban-imports Disallows the use of banned imports. No See below
no-assign-mutated-array Disallows the assignment of returned, mutated arrays. Useful for those times you forget that sort and reverse mutate the array upon which they are called. No None
no-const-enum Disallows the use of const enum. Constant enums are not compatible with isolated modules. No See below
no-enum Disallows the use of enum. No None
no-missing-dollar-expect Disallows dtslint $ExpectType and $ExpectError expectations if the $ is missing. No None
no-t Disallows single-character type parameters. No None
no-unsafe-callback-scope Disallows the use of variables/properties from unsafe/outer scopes in callbacks. No See below
no-unused-declaration Disallows unused declarations. Yes, but see below See below
throw-error Enforces the use of Error values when throwing or rejecting. No None

Options and notes


The ban-imports rule takes an object containing keys that are regular expressions and values that are either booleans or strings containing the explanation for the ban.

For example, to following configuration would disallow "foo" with an explanation, would disallow "bar" without an explanation and would allow "baz":

"rules": {
  "ban-imports": {
    "options": [{
      "^foo$": "'foo' has been deprecated; use 'baz'",
      "^bar$": true,
      "^baz$": false
    "severity": "error"


This rule takes an optional object with an optional allowLocal property - which defaults to false. If allowLocal is true, only exported const enums are forbidden.

For example, to following configuration would local (i.e. non-exported) const enums:

"rules": {
  "no-const-enum": {
    "options": [{
      "allowLocal": true
    "severity": "error"


This rule takes an optional object with optional allowMethods, allowParameters and allowProperties properties.

If the allowMethods option is true, calling methods via this is allowed.

If the allowParameters option is true, referencing function parameters from outer scopes is allowed.

If the allowProperties option is true, accessing properties via this is allowed.

The following options are equivalent to the rule’s default configuration:

"rules": {
  "no-unsafe-callback-scope": {
    "options": [{
      "allowMethods": true,
      "allowParameters": true,
      "allowProperties": false
    "severity": "error"


This rule has a fixer. However, the fixer will only remove unused import declarations. It will not remove other kinds of declarations, as doing so could be potentially destructive.

For example, having it remove a function that you’ve spent time writing - just because you’ve not yet exported or called it - would be too dispiriting, so the rule will just flag it as a failure and leave the function untouched.

The rule takes an optional object with optional imports, declarations and ignored properties. The imports and declarations properties are booleans and determine whether or not unused imports or declarations are allowed. They default to true. The ignored property is an object containing keys that are regular expressions and values that are booleans - indicating whether or not matches are ignored.

For example:

"rules": {
  "no-unused-declaration": {
    "options": [{
      "declarations": true,
      "ignored": {},
      "imports": true
    "severity": "error"


Weekly Downloads



Last ver 7 months ago
Created 2 years ago
Last commit 5 months ago
2 days between commits


Node version: 10.16.0
75.4K unpacked


MIT License
OSI Approved
0 vulnerabilities


4 contributors
Nicholas Jamieson
Maintainer, 273 commits, 3 merges
Works at rexlabsio
2 commits
1 commits, 1 PRs
Christian Jensen
1 commits, 1 PRs
9 PRs


Openbase helps developers choose among and use millions of open-source packages, so they can build amazing products faster.
© 2020 Devstore, Inc.