Weboldal keresés

angular - A Prettier eltávolítja a típusokat


Fogalmam sincs miért, egy Angular alkalmazásban vagyok, és amikor megnyomom a dokumentum formázása gombot, a típusaim eltűnnek.

Before:
export class AppComponent {
  title:string = 'angular-todolist';
  name:string = 'Michael';
  someInteger:number = 10;
}
After:
export class AppComponent {
  title = 'angular-todolist';
  name = 'Michael';
  someInteger = 10;
}

Van valami tipp arra, hogy mi lehet az?

Válasz #1

Alapértelmezés szerint a prettier-tslint a Prettierrel együtt van telepítve, és a tslint.json konfigurációd szerint formáz, automatikusan javítva a kisebb lint hibákat.

Az Angular CLI által generált linting szabályok tartalmaznak egy szabályt, amely kimondja, hogy az implicit típusú változóknak nem szükséges a kifejezett típusmegadás. Konkrétan ez a no-inferrable-types szabály a tslint.json fájlodban.

Ha nem inline módon rendelnéd a változókat, a típusuk nem lenne eltávolítva, például:

export class AppComponent {
  name: string;

  constructor() {
    this.name = 'Name';
  }
}

A fenti formázása megtartaná a kifejezett típusmegadást.

Mivel az alapértelmezett lintelési szabályok az 'Angular módja', szerintem nincs probléma azzal, ha így hagyjuk; ha egy változónak rögtön értéket adunk stringként, a típusa nyilvánvalóan string.

Azonban, ha meg szeretnéd változtatni a Prettier formázási viselkedését, egyszerűen állítsd a no-inferrable-types bejegyzést a tslint.json-ben false-ra. Ha nem szeretnéd megváltoztatni a lintelő szabályokat, akkor a Prettier munkaterületi konfigurációjában is le tudod tiltani, de a lintelő továbbra is hibát jelez az inferálható típusra.