simplr-tslint

1.0.0-alpha.14 • Public • Published

simplr-tslint

A set of TSLint rules used in SimplrJS projects.

Build Status NPM version npm (tag) dependencies Status devDependencies Status

Get started

npm install simplr-tslint --save-dev

To get latest tslint config.

npm install simplr-tslint@next --save-dev

Language service

We recommend using this plugin tslint-language-service.

  1. Install plugin
npm install tslint-language-service -D
  1. Add plugin to tsconfig.json
{
    "compilerOptions": {
        "plugins": [
            {
                "name": "tslint-language-service",
                "alwaysShowRuleFailuresAsWarnings": true,
                "ignoreDefinitionFiles": true
            }
        ]
    }
}
  1. Use workspace TypeScript version

image

image

How to use?

Add this line in your tslint.json file:

{
    "extends": "simplr-tslint"
}

Or:

{
    "extends": ["simplr-tslint"]
}

Custom rules

class-members-name

🔨Has Fixer ⚠️Requires Type info

Enforces consistent naming style in interface and class declarations.

Rule settings

Name Type Optional Description
formatRules FormatRule[] Optional Format rules for class and interface members.
ignoreParentSuffixes string[] Optional Ignores classes and interfaces with given suffix.

Format rule

Name Type Optional Default
kind "method", "property" Required
modifier "public", "private", "protected" Optional "public"
format "none", "camel-case", "pascal-case", "constant-case", "snake-case" Optional "none"
isStatic boolean Optional false
allowedPrefixes string[] Optional

Default config

"class-members-name"[
    true,
    {
        "formatRules": [{ "kind": "property", "format": "camel-case", "allowedPrefixes": ["_"] }],
        "ignoreParentSuffixes": ["Dto"]
    }
]

Config examples

Enforces all members naming to camel-case format.

"class-members-name"true

Enforces all members naming to pascal-case format.

"class-members-name"[true, "pascal-case"]

Enforces all members naming to pascal-case format. Skips origin checking in heritage. Useful when migrating coding style.

"class-members-name"[true, "pascal-case", "skip-origin-checking"]

C# coding style example.

"class-members-name"[
    true,
    {
        "formatRules": [
            { "kind": "method", "modifier": "public", "format": "pascal-case" },
            { "kind": "method", "modifier": "protected", "format": "pascal-case" },
            { "kind": "method", "modifier": "private", "format": "camel-case" },
            { "kind": "property", "modifier": "public", "format": "pascal-case" },
            { "kind": "property", "modifier": "protected", "format": "pascal-case" },
            { "kind": "property", "modifier": "private", "format": "camel-case" }
        ]
    }
]

Ignoring parent suffix example.

"class-members-name"[
    true,
    {
        "ignoreParentSuffixes": ["Dto"]
    }
]
interface Foo {
    _id: string;
//  ~~~           [Declaration "_id" format is not correct (camel-case).]
    full_name: string;
//  ~~~~~~~~~           [Declaration "full_name" format is not correct (camel-case).]
}
 
interface FooDto {
    _id: string;
    full_name: string;
}
 

const-variable-name

🔨Has Fixer ⚠️Requires Type info

Const variables in source file or in module must have constant-case.

Examples

export const FOO_FOO = "Hello World!";
 
export const fooBar = "Hello World!";
//           ~~~~~~                    [Const variables in source file or in module declaration must have (constant-case) format.]
 
export namespace FooNamespace {
    export const PACKAGE_VERSION: string = "v1.0.0";
 
    export function test(): void {
        const variableInFunctionScope: string = "Hello.";
    }
}

Config example

"const-variable-name"true

This rule only will be applied to constants that has primitive value (e.g. string, boolean).

"const-variable-name"[true, "only-primitives"]

exported-namespace-member

🔨Has Fixer

All module members must be exported.

Config example

"exported-namespace-member"true

type-parameter-name

🔨Has Fixer

Type parameter's name must start with "T" prefix.

Example

export type Foo<Value> = [string, Value];
//  ~~~~~                      [Type parameter's name must start with "T" prefix.]
 
export type Bar<TValue> = [string, TValue];

Config example

"type-parameter-name"true

backing-field

🔨Has Fixer

Backing fields are properties with _ prefix. They can ONLY be used in GetAccessor and SetAccessor declarations.

Example

export class Foo {
    constructor(private _foo: string) {}
 
    public get foo(): string {
        return this._foo;
    }
 
    public getFoo(): string {
        return this._foo;
//             ~~~~~~~~~   [Backing field can only be used in GetAccessor and SetAccessor.]
    }
}

Config example

"type-parameter-name"true

License

Released under the MIT license.

Package Sidebar

Install

npm i simplr-tslint

Weekly Downloads

99

Version

1.0.0-alpha.14

License

MIT

Unpacked Size

148 kB

Total Files

18

Last publish

Collaborators

  • quatrodev
  • simplrjs-admin