angular - eroare TS7008: Membru 'summary' are implicit tipul 'any'


După actualizarea la Angular 2 RC am primit următoarea eroare:

eroare TS7008: Membru 'summary' are implicit un tip 'any'.

în această linie:

@Input() summary;

ce s-a întâmplat?

Edit: Ok, se pare că primesc această eroare pentru ORICARE dintre variabilele mele publice.

Răspuns #1

Poate că ați schimbat valoarea atributului noImplicitAny în configurația compilatorului TypeScript... Vedeți fișierul tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false // <-----
  },
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ]
}

Ai putea să încerci să adaugi un tip proprietății tale. Ceva de genul:

@Input() summary:string;

Răspunsul #2

Această întrebare are deja răspunsuri corecte, totuși pentru a clarifica și explica pe deplin:

Soluția 1 - Setează acest lucru în tsconfig.json-ul tău:

"noImplicitAny": false

Soluția 2 Definește tipul pentru variabila ta astfel:

@Input() summary:string;

Explicație:

Dacă convertiți JavaScript simplu în TypeScript, nu veți avea tipuri atribuite variabilelor (sau parametrilor) - deoarece tiparea strictă este ceea ce îi dă TypeScript numele său.

În acest caz, când ai ceva de genul acestei variabile (care nu are un tip atribuit):

@Input() summary;

Atunci TypeScript va presupune implicit că variabila ta are un tip de 'Any' (adică presupune că variabila poate conține o valoare de orice tip). În plus, dacă ai următoarea setare în tsconfig.json:

{
  "compilerOptions": {
    ...
    "noImplicitAny": true,
  }
}

... atunci acest lucru spune compilatorului TypeScript să arunce erori dacă o variabilă sau un parametru are implicit tipul 'Any'. Așadar, poți folosi prima soluție pentru a ignora toate erorile de 'any implicit', sau folosești a doua soluție (să specifici un tip), și 'any' nu va fi implicat.

Referință pentru opțiunile compilatorului TypeScript:

https://www.typescriptlang.org/docs/handbook/compiler-options.html