@duvholt/tslint-yield

0.0.2 • Public • Published

npm version License Build Status Coverage Status

Yield Rule

Lint rule that requires a strict return type for Yield Expressions when result is used for TSLint.

Usage

tslint-yield has peer dependencies on TSLint and TypeScript.

To use these lint rule with the default preset, use configuration inheritance via the extends keyword. Here's a sample configuration where tslint.json lives adjacent to your node_modules folder:

{
  "extends": ["@servicetitan/tslint-yield"],
  "rules": {
    // turn on tslint-yield rule here
    "yield": true
  }
}

To lint your .ts and .tsx files you can simply run tslint -c tslint.json 'src/**/*.{ts,tsx}'.

Rule

requires a strict return type for Yield Expressions when result is used in cases:

Property Access Expressions
//Fail
(yield getData()).result;

//Good
((yield getData()) as ResultType).result;
Variable Statement
//Fail
var result = yield getData();

//Good
var result = (yield getData()) as ResultType;
Binary Expression
//Fail
var result = null;
result = yield getData();

//Good
var result = null;
result = (yield getData()) as ResultType;
//Fail
var result = { data: null };
result.data = yield getData();

//Good
var result = { data: null };
result.data = (yield getData()) as ResultType;
Any is not allowed
//Fail
(yield getData()) as any).result

//Good
((yield getData()) as ResultType).result;
Yield Type and casting type should be equal
const getData = () => new Promise<number>(() => {});

//Fail - string !== number
(yield getData()) as string).result

//Good
((yield getData()) as number).result;
Yield Type should be Promise
const getData = () => new Promise<number>(() => {});

//Fail
let result = (yield number) as number)

//Good
let result = ((yield getData()) as number);

Package Sidebar

Install

npm i @duvholt/tslint-yield

Weekly Downloads

1

Version

0.0.2

License

Apache-2.0

Unpacked Size

20.5 kB

Total Files

9

Last publish

Collaborators

  • duvholt