Tslint: Moment.js kann nicht importiert und verwendet werden

Erstellt am 11. Nov. 2017  ·  3Kommentare  ·  Quelle: palantir/tslint

Fehlerbericht

  • __TSLint-Version__: 5.8.0
  • __TypeScript-Version__: 2.6.1
  • __TSLint ausführen über__: (wählen Sie eine aus) CLI

TypeScript-Code wird linted

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

const x: moment.Moment = moment();

logger.info(x.toString());

mit tslint.json Konfiguration:

{
    "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"]
}

Tatsächliches Verhalten

Gemeldete Fehler:

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

Erwartetes Verhalten

Die Möglichkeit, moment.js zu verwenden. Ab sofort erkennt tslint es als Typ: any , was zu Linting-Fehlern führt. Interessanterweise erhalte ich, wenn ich versuche, eine bestimmte Methode zu importieren, immer noch die gleichen No-Unsafe-Any-Fehler:

Beispiel:

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

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

logger.info(x.toString());

Erzeugt Ausgabe:

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

Nur ein Hinweis - .d.ts-Datei ist im Moment enthalten - keine Installation von @types erforderlich.

Duplicate

Hilfreichster Kommentar

Aber was ist, wenn ich auch no-unused-variable verwenden möchte?

Es gibt mehrere Möglichkeiten:

  • Verwenden Sie nicht die Lint-Regel, sondern verwenden Sie stattdessen die Compiler-Optionen --noUnusedLocals und --noUnusedParameters
  • tslint zweimal ausführen, der erste Lauf ohne no-unused-variable , der zweite Lauf nur no-unused-variable
  • Verwenden Sie stattdessen eine Regel, die ich geschrieben habe https://github.com/ajafff/tslint-consistent-codestyle/blob/master/docs/no-unused.md (erkennt keine ungenutzten privaten Mitglieder)

Warum scheint sich dies nur auf den Moment in meinem Projekt zu auswirken - ich habe viele andere Bibliotheken von Drittanbietern, die problemlos importieren.

Niemand weiß wirklich, was schief geht und warum. Die Regel bringt irgendwie die Interna des Typoskripts durcheinander.

Alle 3 Kommentare

Nur ein Hinweis - .d.ts-Datei ist im Moment enthalten - keine Installation von @types erforderlich.

Danke, das wäre meine erste Frage gewesen.

tslint:all aktiviert no-unused-variable . Es ist bekannt, dass diese Regel andere typgeprüfte Regeln stört: #2736
Sie könnten versuchen, no-unused-variable zu deaktivieren und zu sehen, ob die Fehler verschwinden.

Sie könnten versuchen, No-Unused-Variable zu deaktivieren und zu sehen, ob die Fehler verschwinden.

Das hat funktioniert. Aber was ist, wenn ich auch no-unused-variable möchte? Warum scheint sich dies nur auf den Moment in meinem Projekt zu auswirken - ich habe viele andere Bibliotheken von Drittanbietern, die problemlos importieren.

Aber was ist, wenn ich auch no-unused-variable verwenden möchte?

Es gibt mehrere Möglichkeiten:

  • Verwenden Sie nicht die Lint-Regel, sondern verwenden Sie stattdessen die Compiler-Optionen --noUnusedLocals und --noUnusedParameters
  • tslint zweimal ausführen, der erste Lauf ohne no-unused-variable , der zweite Lauf nur no-unused-variable
  • Verwenden Sie stattdessen eine Regel, die ich geschrieben habe https://github.com/ajafff/tslint-consistent-codestyle/blob/master/docs/no-unused.md (erkennt keine ungenutzten privaten Mitglieder)

Warum scheint sich dies nur auf den Moment in meinem Projekt zu auswirken - ich habe viele andere Bibliotheken von Drittanbietern, die problemlos importieren.

Niemand weiß wirklich, was schief geht und warum. Die Regel bringt irgendwie die Interna des Typoskripts durcheinander.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen