Tslint: Impossible d'importer et d'utiliser moment.js

Créé le 11 nov. 2017  ·  3Commentaires  ·  Source: palantir/tslint

Rapport d'erreur

  • __TSLint version__ : 5.8.0
  • __TypeScript version__ : 2.6.1
  • __Exécution de TSLint via__ : (choisissez-en une) CLI

Code TypeScript en train d'être lint

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

const x: moment.Moment = moment();

logger.info(x.toString());

avec la configuration 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"]
}

Comportement réel

Erreurs signalées :

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

Comportement prévisible

La possibilité d'utiliser moment.js. Pour l'instant, tslint le détecte comme type : any , ce qui provoque des erreurs de linting. Fait intéressant, si j'essaie d'importer une méthode spécifique, j'obtiens toujours les mêmes erreurs no-unsafe-any :

Exemple:

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

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

logger.info(x.toString());

Produit une sortie :

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

Juste un avertissement - le fichier .d.ts est inclus avec moment - pas besoin d'installer à partir de @types.

Duplicate

Commentaire le plus utile

Mais que se passe-t-il si je veux aussi utiliser no-unused-variable ?

Il y a plusieurs options :

Pourquoi cela ne semble-t-il affecter que le moment de mon projet - j'ai de nombreuses autres bibliothèques tierces qui s'importent très bien.

Personne ne sait vraiment ce qui ne va pas et pourquoi. La règle perturbe en quelque sorte les éléments internes du dactylographe.

Tous les 3 commentaires

Juste un avertissement - le fichier .d.ts est inclus avec moment - pas besoin d'installer à partir de @types.

Merci, ça aurait été ma première question.

tslint:all active no-unused-variable . Cette règle est connue pour interférer avec d'autres règles de type vérifié : #2736
Vous pouvez essayer de désactiver no-unused-variable et voir si les erreurs disparaissent.

Vous pouvez essayer de désactiver la variable no-unused et voir si les erreurs disparaissent.

Ça a marché. Mais que faire si je veux aussi utiliser no-unused-variable ? Pourquoi cela ne semble-t-il affecter que le moment de mon projet - j'ai de nombreuses autres bibliothèques tierces qui s'importent très bien.

Mais que se passe-t-il si je veux aussi utiliser no-unused-variable ?

Il y a plusieurs options :

Pourquoi cela ne semble-t-il affecter que le moment de mon projet - j'ai de nombreuses autres bibliothèques tierces qui s'importent très bien.

Personne ne sait vraiment ce qui ne va pas et pourquoi. La règle perturbe en quelque sorte les éléments internes du dactylographe.

Cette page vous a été utile?
0 / 5 - 0 notes