Tslint: НСвозмоТно ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ moment.js

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 11 нояб. 2017  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: palantir/tslint

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

  • __TSLint вСрсия__: 5.8.0
  • __TypeScript version__: 2.6.1
  • __ Запуск TSLint Ρ‡Π΅Ρ€Π΅Π· __: (Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈΠ½) CLI

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

import * as moment from 'moment';
import { logger } from './utils/logger';

const x: moment.Moment = moment();

logger.info(x.toString());

с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ tslint.json :

{
    "extends": ["tslint:all", "tslint-eslint-rules", "tslint-config-prettier"],
    "rules": {
        "completed-docs": [false],
        "member-ordering": [
            true,
            {
                "order": [
                    "public-static-field",
                    "protected-static-field",
                    "private-static-field",
                    "public-instance-field",
                    "private-instance-field",
                    "public-constructor",
                    "protected-constructor",
                    "private-constructor",
                    "public-static-method",
                    "protected-static-method",
                    "private-static-method",
                    "public-instance-method",
                    "private-instance-method"
                ]
            }
        ],
        "no-implicit-dependencies": false,
        "no-inferrable-types": false,
        "no-null-keyword": false,
        "prettier": [
            true,
            {
                "bracketSpacing": true,
                "jsxBracketSameLine": false,
                "parser": "typescript",
                "printWidth": 120,
                "semi": true,
                "singleQuote": true,
                "tabWidth": 4,
                "trailingComma": "all",
                "useTabs": false
            }
        ],
        "variable-name": [true, "allow-leading-underscore", "allow-pascal-case", "ban-keywords", "check-format"]
    },
    "rulesDirectory": ["tslint-plugin-prettier"]
}

ЀактичСскоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΎ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…:

/Users/mrandolph/Projects/***/***/src/server/test.ts
ERROR: 4:26   no-unsafe-any  Unsafe use of expression of type 'any'.
ERROR: 6:13   no-unsafe-any  Unsafe use of expression of type 'any'.

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

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ moment.js. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ tslint опрСдСляСт Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ: any , Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ошибки Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³Π°. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли я ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, я всС Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Ρ‚Π΅ ΠΆΠ΅ самыС ошибки no-unsafe-any:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

import { duration, Duration } from 'moment';
import { logger } from './utils/logger';

const x: Duration = duration(1, 'week');

logger.info(x.toString());

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹Π²ΠΎΠ΄:

/Users/mrandolph/Projects/***/***/src/server/test.ts
ERROR: 4:21   no-unsafe-any  Unsafe use of expression of type 'any'.
ERROR: 6:13   no-unsafe-any  Unsafe use of expression of type 'any'.

ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ…Π΅Π΄Π·-Π°ΠΏ - Ρ„Π°ΠΉΠ» .d.ts Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ - Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ· @types.

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

Но Ρ‡Ρ‚ΠΎ, Ссли я Π·Π°Ρ…ΠΎΡ‡Ρƒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ no-unused-variable?

Π•ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²:

  • Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ lint, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто Π½Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компилятора --noUnusedLocals ΠΈ --noUnusedParameters
  • Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ tslint Π΄Π²Π° Ρ€Π°Π·Π°, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ - Π±Π΅Π· no-unused-variable , Π²Ρ‚ΠΎΡ€ΠΎΠΉ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ no-unused-variable
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто этого ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я написал https://github.com/ajafff/tslint-consistent-codestyle/blob/master/docs/no-unused.md (Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ частныС Ρ‡Π»Π΅Π½Ρ‹)

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это, каТСтся, влияСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ - Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

На самом Π΄Π΅Π»Π΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ устройству машинописного тСкста.

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

ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ…Π΅Π΄Π·-Π°ΠΏ - Ρ„Π°ΠΉΠ» .d.ts Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ - Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ· @types.

Бпасибо, это Π±Ρ‹Π» Π±Ρ‹ ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос.

tslint:all Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ no-unused-variable . Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ°: # 2736
Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ no-unused-variable ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, исчСзнут Π»ΠΈ ошибки.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ no-unused-variable ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, исчСзнут Π»ΠΈ ошибки.

Π­Ρ‚ΠΎ сработало. Но Ρ‡Ρ‚ΠΎ, Ссли я Ρ…ΠΎΡ‡Ρƒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ no-unused-variable ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ это, каТСтся, влияСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ - Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Но Ρ‡Ρ‚ΠΎ, Ссли я Π·Π°Ρ…ΠΎΡ‡Ρƒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ no-unused-variable?

Π•ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²:

  • Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ lint, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто Π½Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компилятора --noUnusedLocals ΠΈ --noUnusedParameters
  • Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ tslint Π΄Π²Π° Ρ€Π°Π·Π°, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ - Π±Π΅Π· no-unused-variable , Π²Ρ‚ΠΎΡ€ΠΎΠΉ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ no-unused-variable
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто этого ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я написал https://github.com/ajafff/tslint-consistent-codestyle/blob/master/docs/no-unused.md (Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ частныС Ρ‡Π»Π΅Π½Ρ‹)

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это, каТСтся, влияСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ - Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

На самом Π΄Π΅Π»Π΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ устройству машинописного тСкста.

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

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

avanderhoorn picture avanderhoorn  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

CSchulz picture CSchulz  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

sumitkmr picture sumitkmr  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

rajinder-yadav picture rajinder-yadav  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

dashmug picture dashmug  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ