Tslint: НСт Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для псСвдонима Ρ‚ΠΈΠΏΠ° ΠΈ интСрфСйса ΠΏΡ€ΠΈ использовании Π² качСствС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ….

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 2 Π°ΠΏΡ€. 2017  Β·  24ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: palantir/tslint

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС

  • __TSLint вСрсия__: 5.0.0
  • __TypeScript version__: 2.2.2
  • __ Запуск TSLint Ρ‡Π΅Ρ€Π΅Π·__: CLI

Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° TypeScript

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 |         }

ОТидаСмоС повСдСниС

ПсСвдоним Ρ‚ΠΈΠΏΠ° ΠΈ интСрфСйс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ошибок lint.

P1 Requires Type Checker Fixed Bug

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠœΡ‹ всС Π΅Ρ‰Π΅ сталкиваСмся с этим. Π’ΠΎΡ‚ минимальноС Ρ€Π΅ΠΏΠΎ (самоС малСнькоС, Ρ‡Ρ‚ΠΎ я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ):

box.ts:

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.

ВСрсии:

  • tslint: 5.1.0
  • машинопись: 2.3.0

ВсС 24 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Microsoft / TypeScript # 14953

Мой ΠΊΠΎΠ΄ выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ², поэтому это Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ Typescript. Π’ качСствС Β«ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈΒ» я Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» "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. Π― Ρ€Π°Π΄ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, прСдоставив ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

ΠœΡ‹ всС Π΅Ρ‰Π΅ сталкиваСмся с этим. Π’ΠΎΡ‚ минимальноС Ρ€Π΅ΠΏΠΎ (самоС малСнькоС, Ρ‡Ρ‚ΠΎ я ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ):

box.ts:

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.

ВСрсии:

  • tslint: 5.1.0
  • машинопись: 2.3.0

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ каТСтся, Ρ‡Ρ‚ΠΎ имя ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ модуля ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ 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 : Π½Π΅Ρ‚ ошибки

ΠŸΡ€ΠΈΡˆΠ΅Π» сюда для этого. Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Ρ†Π΅Π»ΡƒΡŽ ΠΊΡƒΡ‡Ρƒ Π½ΠΎΠ²Ρ‹Ρ… ошибок lint, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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.

ВсС это _Π½Π΅_ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° скорСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² опрСдСлСниях _Ρ‚ΠΈΠΏΠ°_.

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

исправлСно Π² TS 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 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ вСрсиСй TypeScript, Ρ‡Π΅ΠΌ ваш tsc ?

Π― Π½Π΅ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Оба относятся ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π² ./node_modules/.bin/ . Как ΠΌΠ½Π΅ это ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ?

2 июня 2017 Π³. Π² 14:52 Π­Π½Π΄ΠΈ [email protected] написал:

@mikew https://github.com/mikew ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ваш tslint Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ вСрсиСй TypeScript, Ρ‡Π΅ΠΌ ваш tsc?

-
Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ вас упомянули.
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это элСктронноС письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, просмотритС Π΅Π³ΠΎ Π½Π° GitHub https://github.com/palantir/tslint/issues/2470#issuecomment-305864709 ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΊ https://github.com/notifications/unsubscribe-auth/AAASeRvhBbEUpy0tQwk_3bsMvCndObSY

ИспользованиС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ tsc Π² tslint самом Π΄Π΅Π»Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ... @mikew ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π΅Ρ€ΡΠΈΡŽ 2.4

@adidahiya Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, это Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹, рСбята, devDependencies Π½ΠΎ Π½Π΅ Π² peerDependencies . см. здСсь https://github.com/palantir/tslint/blob/3323ed2b0824a12c8b35c421ebf23c7d17cf788f/package.json#L51. НадСюсь ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ· ΠΏΠ°Ρ‚Ρ‡Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС: smile:

Ооо, я пытался ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ tslint. И Π΅Π³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст исчСз. Π§Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ с пряТСй.

Π£ мСня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с вСрсиСй 5.6.0

@tolgaek НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΊΠΎΠ΄Π°? Какая Ρƒ вас вСрсия TS? ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ воспроизвСсти свою ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ компилятора --noUnusedLocals вмСсто tslint?

ΠΏΡ€ΠΈΠ²Π΅Ρ‚ @ andy-ms. Π― пытался Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простого ΠΊΠΎΠ΄Π°, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° ошибка Π½Π΅ появлялась. ΠŸΠΎΡ…ΠΎΠΆΠ΅, эта ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ связана со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ нашСго прилоТСния.

Π’Π°ΠΊΠΆΠ΅ я Π½Π΅ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с noUnusedLocals Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Β«error: unknown option` --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 ! πŸ€–

πŸ”’ Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ дальнСйшиС Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ обсуТдСния. Бпасибо! πŸ‘‹

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ