describe('Action', () => {
describe('actionCreator', () => {
type DummyActionType = 'FOO' | 'BAR';
interface Point {
readonly x: number;
readonly y: number;
}
it('creates the correct FSA for primitives', () => {
const creator = actionCreator<DummyActionType, number>('FOO');
creator(7).should.deep.equal({ type: 'FOO', payload: 7 });
});
it('creates the correct FSA for objects', () => {
const creator = actionCreator<DummyActionType, Point>('BAR');
creator({ x: 1, y: 3 }).should.deep.equal({
type: 'BAR',
payload: { x: 1, y: 3 },
});
});
});
});
tslint.json
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде:
{
"defaultSeverity": "error",
"extends": [
// "tslint-microsoft-contrib",
"tslint:recommended",
"tslint-react"
],
"rulesDirectory": [
"./node_modules/tslint-immutable/rules"
],
// additional rules aside from inherited ones
"rules": {
"arrow-parens": [true, "ban-single-arg-parens"],
// possible errors (core TSLint)
"no-switch-case-fall-through": true,
"no-string-throw": true,
// stylistic (core TSLint)
"array-type": [true, "array"],
"interface-name": [true, "never-prefix"],
"no-null-keyword": true,
"no-require-imports": true,
"object-literal-sort-keys": false,
"ordered-imports": [false], // array makes VSCode happy
"quotemark": [true, "single", "jsx-double", "avoid-escape"],
// best practices (core TSLint)
"linebreak-style": [true, "LF"],
"max-file-line-count": [true, 300],
"max-line-length": [true, 100],
"no-magic-numbers": true,
"no-unused-expression": true,
"no-unused-variable": [true, "check-parameters", "react"],
"one-line": [false],
"prefer-const": true,
// functional programming
"no-let": true, // no-var on by default
"no-this": true,
"no-class": true,
"no-new": false, // records?
"readonly-interface": true,
"readonly-indexer": true,
"readonly-array": true,
"no-mixed-interface": true,
// react
"jsx-no-multiline-js": false,
// legal
"file-header": [true, "[+ ]{10,}"]
}
}
рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкреНрд░рдпреБрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред
src/frontend/actions/Action.test.ts
'DummyActionType' is declared but never used. (no-unused-variable)
15 | describe('Action', () => {
16 | describe('actionCreator', () => {
> 17 | type DummyActionType = 'FOO' | 'BAR';
| ^
18 |
19 | interface Point {
20 | readonly x: number;
'Point' is declared but never used. (no-unused-variable)
17 | type DummyActionType = 'FOO' | 'BAR';
18 |
> 19 | interface Point {
| ^
20 | readonly x: number;
21 | readonly y: number;
22 | }
рдЙрдкрдирд╛рдо рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд▓рд┐рдВрдЯ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ/рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ#14953
рдореЗрд░рд╛ рдХреЛрдб рдЯрд╛рдЗрдкрдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред "рд╕рдорд╛рдзрд╛рди" рдХреЗ рд░реВрдк рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ "noUnusedLocals"
рдФрд░ "noUnusedParameters"
tsconfig рдореЗрдВ рдЪрд╛рд▓реВ рд╣реИ, рдФрд░ no-unused-variable
рдмрдВрдж рд╣реИред
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
import {buildModel} from '../src/compile/common';
import {FacetModel} from '../src/compile/facet';
import {LayerModel} from '../src/compile/layer';
import {Model} from '../src/compile/model';
import {UnitModel} from '../src/compile/unit';
import {initConfig} from '../src/config';
import {ExtendedSpec, FacetSpec, LayerSpec, normalize, TopLevel, UnitSpec} from '../src/spec';
export function parseModel(inputSpec: TopLevel<ExtendedSpec>): Model {
const spec = normalize(inputSpec);
return buildModel(spec, null, '', initConfig(inputSpec.config));
}
export function parseUnitModel(spec: TopLevel<UnitSpec>) {
return new UnitModel(spec, null, '', initConfig(spec.config));
}
export function parseLayerModel(spec: TopLevel<LayerSpec>) {
return new LayerModel(spec, null, '', initConfig(spec.config));
}
export function parseFacetModel(spec: TopLevel<FacetSpec>) {
return new FacetModel(spec, null, '', initConfig(spec.config));
}
рдореБрдЭреЗ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ:
ERROR: test/util.ts[7, 9]: 'ExtendedSpec' is declared but never used.
ERROR: test/util.ts[7, 23]: 'FacetSpec' is declared but never used.
ERROR: test/util.ts[7, 34]: 'LayerSpec' is declared but never used.
ERROR: test/util.ts[7, 66]: 'UnitSpec' is declared but never used.
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ tslint рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдирд░рд┐рдХ рдореЗрдВ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЖрдпрд╛рдд рдирд╣реАрдВ рд╣рдЯрд╛ рд╕рдХрддрд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ https://github.com/Microsoft/TypeScript/issues/14953 рд╣реИред @joscha рдиреЗ https://github.com/palantir/tslint/issues/2621 рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪреНрдЫ рд░реЗрдкреНрд░реЛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдЖрдпрд╛рдд рдЯреВрдЯрд╛ рдирд╣реАрдВ рд╣реИ (https://gist.github.com/joscha/6633bae73fb4b143cfb685b2754259c9)ред рдЗрд╕ рдкрд░ рдЙрдЫрд╛рд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ред
рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрднреА рднреА React
рдХрд╛ рдЖрдпрд╛рдд рд╣реЛрддрд╛ рд╣реИ (рджрд┐рдЦрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛)ред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп declare namespace React { class Component<T, U> {} }
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ no-unused-variable
tslint 5 рдореЗрдВ рдЕрднреА рднреА рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИред рдореБрдЭреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реЛ рд░рд╣реА рд╣реИред
рд╣рдо рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рдиреНрдпреВрдирддрдо рд░реЗрдкреЛ рд╣реИ (рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ):
рдмреЙрдХреНрд╕.рдЯреАрдПрд╕:
export class Box<T> {
value: T;
}
box_holder.ts:
import { Box } from './box';
export class BoxHolder<T> {
box: Box<T>;
}
рдирддреАрдЬрд╛:
ERROR: src/base/tests/box_holder.ts[3, 24]: 'T' is declared but never used.
рд╕рдВрд╕реНрдХрд░рдг:
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ box_holder.ts
рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде box.ts
, box_holder.ts
рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ рдХреБрдЫ рдЕрд▓рдЧ рдирд╛рдореЛрдВ рд╕реЗ, рдкреИрджрд╛рд╡рд╛рд░:
bo.ts
: рддреНрд░реБрдЯрд┐
bo_.ts
: рддреНрд░реБрдЯрд┐
bow.ts
: рддреНрд░реБрдЯрд┐
box_.ts
: рддреНрд░реБрдЯрд┐
box_holder.ts
: рддреНрд░реБрдЯрд┐
boxa.ts
: рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ
boy.ts
: рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ
bx.ts
: рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ
рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЖрдП рд╣реИрдВред рдореБрдЭреЗ рдирдИ рд▓рд┐рдВрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ:
ERROR: src/app/app-state.ts[1, 1]: All imports are unused.
ERROR: src/app/app.component.ts[2, 15]: 'Platform' is declared but never used.
ERROR: src/auth/auth.service.ts[2, 10]: 'Http' is declared but never used.
рд╡реЗ рд╕рднреА _not_ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ _type_ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВред
import { AuthState } from '../auth/models/auth-state'; // <-- "All imports are unused"
export declare interface AppState {
auth: AuthState;
}
рдЗрд╕реЗ рдЕрднреА typescript@next
рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдк рд╕рдм рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЕрднреА рднреА рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ [email protected]
[email protected] . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
import * as TypeMoq from 'typemoq';
import { MockedMethod } from '../mocking';
import { IComponent } from '../component'; // <-- All imports are unused
import { IComponentFactory } from '../componentfactory';
export class CreateComponentXMethodMock extends MockedMethod<IComponentFactory, IComponent> {
constructor(mock: TypeMoq.IMock<IComponentFactory>) {
super(mock, x => x.createComponentX(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAnyNumber()));
}
}
рдареАрдХ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджрд┐рдпрд╛ред https://github.com/Microsoft/TypeScript/issues/14953#issuecomment -302101264
рдЯреАрдПрд╕ 2.4 . рдореЗрдВ рддрдп
рдореИрдВ рдЗрд╕реЗ tsc
рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ:
interface SurveyAssetLayersProxyProps {
survey: Survey
}
export default class SurveyAssetLayersControl extends React.Component<SurveyAssetLayersProxyProps, void> {
}
рдореБрдЭреЗ рджреЗрддрд╛ рд╣реИ: ERROR: 19:11 no-unused-variable 'SurveyAssetLayersProxyProps' is declared but never used.
@mikew рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ tslint
рдЖрдкрдХреЗ tsc
рд╕реЗ рднрд┐рдиреНрди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реЛ?
рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рдерд╛ред рджреЛрдиреЛрдВ ./node_modules/.bin/
рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рдЙрдВрдЧрд╛?
2 рдЬреВрди, 2017 рдХреЛ рджреЛрдкрд╣рд░ 2:52 рдмрдЬреЗ, рдПрдВрдбреА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
@mikew https://github.com/mikew рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ tslint рдЖрдкрдХреЗ tsc рд╕реЗ рднрд┐рдиреНрди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реЛ?
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ https://github.com/palantir/tslint/issues/2470#issuecomment-305864709 , рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ https://github.com/notifications/unsubscribe-auth/AAASeRvhBbEUpy0tQwk_wtObSYT9bsndks5sAEvCgaw3TObSYT9bsndks5sAEvCgaws .
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЕрд▓рдЧ tsc
рдореЗрдВ tslint
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рд╕рдВрднрд╡ ... @mikew рдЬреЛ 2.4 рдХрд╛ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд░рд╛рдд рдХреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
@adidahiya рдЕрднреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд▓реЛрдЧ рдХреЗрд╡рд▓ devDependencies
deps рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди peerDependencies
ред рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ https://github.com/palantir/tslint/blob/3323ed2b0824a12c8b35c421ebf23c7d17cf788f/package.json#L51ред рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкреИрдЪ рд░рд┐рд▓реАрдЬ рдорд┐рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж :рдореБрд╕реНрдХрд╛рди:
рдУрд╣, рдореИрдВрдиреЗ tslint рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕рдХреА рдиреЗрд╕реНрдЯреЗрдб рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓реА рдЧрдИред рдпрд╛рд░реНрди рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред
рдореИрдВ v5.6.0 . рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ
@tolgaek рдХреНрдпрд╛ рдЖрдк рдирдореВрдирд╛ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдкрдХрд╛ рдЯреАрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк tslint рдХреЗ рдмрдЬрд╛рдп --noUnusedLocals
рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рд╣рд╛рдп @ рдПрдВрдбреА-рдПрдордПрд╕ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рд░рд▓ рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рддрдм рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧреАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХрд┐рд╕реА рддрд░рд╣ рд╣рдорд╛рд░реЗ рдРрдк рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ noUnusedLocals
рд╕рд╛рде рдирд╣реАрдВ рдЪрд▓ рд╕рдХрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ "рддреНрд░реБрдЯрд┐: рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рдХрд▓реНрдк `--noUnusedLocals'" рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ:
import { StepUpProvider } from './step-up.provider';
import { Injectable } from '@angular/core';
import {
Http,
XHRBackend,
RequestOptions,
RequestOptionsArgs,
Response,
Request
} from '@angular/http';
import { Observable } from 'rxjs';
@Injectable()
export class RequestInterceptor extends Http {
constructor(
public backend: XHRBackend,
public defaultOptions: RequestOptions,
private stepUpProvider: StepUpProvider
) {
super(backend, defaultOptions);
}
request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
return this.stepUpProvider.intercept(super.request.bind(this, url, options));
}
}
рдЙрдкрд░реЛрдХреНрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдореБрдЭреЗ **.ts[8, 3]: 'Response' is declared but never used.
рднрд▓реЗ рд╣реА Response
рдХрд╛ рдЙрдкрдпреЛрдЧ request
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ tslint 5.10.0 рдФрд░ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ 2.9.2 рдХреЗ рд╕рд╛рде рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдмреАрдк рдмреВрдк! TSLint рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ЁЯСИ рдФрд░ рдЖрдкрдХреЛ typescript-eslint рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП! рдореИрдВ
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрдЧреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╢реБрдХреНрд░рд┐рдпрд╛! рдореИрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рдо рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рдиреНрдпреВрдирддрдо рд░реЗрдкреЛ рд╣реИ (рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ):
рдмреЙрдХреНрд╕.рдЯреАрдПрд╕:
box_holder.ts:
рдирддреАрдЬрд╛:
рд╕рдВрд╕реНрдХрд░рдг: