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