0.0.2 • Published 5 years ago

@duvholt/tslint-yield v0.0.2

Weekly downloads
1
License
Apache-2.0
Repository
github
Last release
5 years ago

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);