visual studio code - Cum să configurezi VSCode pentru a arăta erorile TypeScript direct în linie


Încerc să migrez un proiect ES6 la TypeScript. Aceasta este prima mea încercare de a scrie un modul TypeScript în NodeJS.

Se pare că funcționează mai bine în Angular-CLI până acum.

Am reușit să-l compilez folosind linia de comandă tsc, dar nu sunt sigur cum să afișez erorile și IntelliSense în editorul de cod.

Într-un director am cele două fișiere prezentate mai jos. Când îl compilează, conform așteptărilor, generează o eroare de compilare: Parametrii furnizați nu corespund niciunei semnături a țintei apelului.. Asta este în regulă.

Dar VSCode nu afișează nicio eroare în editor, chiar dacă fac o eroare de sintaxă deliberată, cum ar fi scoaterea unei paranteze, sau erori de tip ca aceasta. Cum pot să fac VSCode să afișeze erori de sintaxă sau de compilator direct în editor pentru fișierele .ts?

eroare-validare.ts

/**
 * Wrapper for a particular validation error.
 */
export class ValidationError extends Error {
  private type: string;

  constructor(error: any) {
    super(error);
    Error.captureStackTrace(this, this.constructor);
    this.message = error.message;
    this.type = 'ValidationError';
  }
}

Atunci încerc să scriu un simplu spec pentru a testa fluxul de lucru:

validation-error.spec.ts

import { ValidationError } from './validation-error';
import * as should from 'should';

describe('Validation Error', () => {
  it('should create a new instance', () => {
    const instance = new ValidationError();
    should.exist(instance);
  });
});

Editat aici:

Încă lucrez la asta - am configurat tsc să ruleze automat cu acest job în tasks.json:

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "taskName": "tsc",
  "command": "tsc",
  "isShellCommand": true,
  "args": ["-w", "-p", "."],
  "problemMatcher": "$tsc-watch",
  "echoCommand": true
}

Bănuiesc că, dacă erorile ar fi raportate corect folosind $tsc-watch, eroarea ar apărea probabil și în editor. Când rulez sarcina, primesc un rezultat de genul:

running command$ tsc -w -p .
src/hello.ts(15,1): error TS2346: Supplied parameters do not match any signature of call target.
4:24:40 PM - Compilation complete. Watching for file changes.

Dar nu sunt raportate probleme în vizualizarea Problems - deși, evident, există o problemă de compilare.

Am luat setarea $tsc-watch de pe această pagină a documentației: https://code.visualstudio.com/docs/editor/tasks

Răspuns #1

Pentru mine problema a fost rezolvată prin setarea validării Typescript pe true în setările VSCode:

"typescript.validate.enable": true,

Îmi dezactivasem asta în setările spațiului meu de lucru în trecut și am uitat!

Așadar, asigură-te că verifici de două ori ca această setare să nu fie setată pe fals în setările utilizatorului, setările spațiului de lucru sau setările folderului.

De exemplu, regula pe care încercam să o fac să funcționeze verifica variabilele nedefinite, ceea ce a fost remediat imediat când am setat validate pe true.

Răspunsul #2

Celelalte răspunsuri (majoritatea înainte de anul 2020) nu au funcționat pentru mine.

Conform acestei cereri de funcționalitate din depozitul VS Code al Microsoft, efectuați următorii pași:

  1. În fișierul tău settings.json adaugă:
"typescript.validate.enable": true,
"typescript.tsserver.experimental.enableProjectDiagnostics": true,
  1. În tsconfig.json adaugă:
"include": [
    "src",
    "global.d.ts",
  ],
"exclude": [
    "node_modules",
    "plugins",
    "public"
  ]

Așteptați puțin (sau reporniți VS Code) pentru a vedea o listă de erori afișate în fișierele deschise și adăugate în panoul de probleme.