Tslint: Não é possível importar e usar moment.js

Criado em 11 nov. 2017  ·  3Comentários  ·  Fonte: palantir/tslint

Relatório de erro

  • __TSLint version__: 5.8.0
  • __TypeScript version__: 2.6.1
  • __Executando TSLint via__: (escolha um) CLI

Código TypeScript sendo vinculado

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

const x: moment.Moment = moment();

logger.info(x.toString());

com configuração 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"]
}

Comportamento real

Erros relatados:

/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'.

Comportamento esperado

A capacidade de usar moment.js. A partir de agora tslint está detectando como tipo: any , que causa erros de linting. Curiosamente, se eu tento importar um método específico, ainda recebo os mesmos erros não inseguros:

Exemplo:

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

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

logger.info(x.toString());

Produz saída:

/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'.

Apenas um aviso - o arquivo .d.ts está incluído no moment - não há necessidade de instalar a partir do @types.

Duplicate

Comentários muito úteis

Mas e se eu também quiser usar nenhuma variável não usada?

Existem várias opções:

Por que isso parece afetar apenas o momento do meu projeto - eu tenho muitas outras bibliotecas de terceiros que são importadas muito bem.

Ninguém sabe realmente o que está errado e por quê. A regra de alguma forma mexe com as partes internas do texto datilografado.

Todos 3 comentários

Apenas um aviso - o arquivo .d.ts está incluído no moment - não há necessidade de instalar a partir do @types.

Obrigado, essa teria sido minha primeira pergunta.

tslint:all ativa no-unused-variable . Esta regra é conhecida por interferir com outras regras de verificação de tipo: # 2736
Você pode tentar desabilitar no-unused-variable e ver se os erros desaparecem.

Você pode tentar desabilitar nenhuma variável não utilizada e ver se os erros desaparecem.

Isso funcionou. Mas e se eu quiser usar no-unused-variable também? Por que isso parece afetar apenas o momento do meu projeto - eu tenho muitas outras bibliotecas de terceiros que são importadas muito bem.

Mas e se eu também quiser usar nenhuma variável não usada?

Existem várias opções:

Por que isso parece afetar apenas o momento do meu projeto - eu tenho muitas outras bibliotecas de terceiros que são importadas muito bem.

Ninguém sabe realmente o que está errado e por quê. A regra de alguma forma mexe com as partes internas do texto datilografado.

Esta página foi útil?
0 / 5 - 0 avaliações