Ce face noStrictGenericChecks
Opțiunea face parte din „Backwards Compatibility”: a fost marcată ca depreciată în TypeScript 5.0 și scoasă în TypeScript 5.5. În tsc 5.9, prezența ei în tsconfig.json dă eroarea TS5102, iar "ignoreDeprecations": "5.0" nu mai ajută. Șterge-o din configurație.
TypeScript 2.4 a introdus o verificare mai strictă a funcțiilor generice: când compară <T>(x: T[]) => T cu <T>(x: T) => T, ține cont de legătura dintre parametri și rezultat. noStrictGenericChecks permitea revenirea la comportamentul vechi, mai permisiv, pentru cod care nu trecea de noua verificare.
Astăzi verificarea strictă este mereu activă. Codul care nu trece trebuie corectat, de obicei cu tipuri generice mai precise.
Parametri
| Parametru | Descriere |
|---|---|
noStrictGenericChecks |
Scoasă. Dă TS5102. |
Exemple
Exemplul 1: Ce verifică tsc oricum
B cere un tablou, A trimite un singur element. Atribuirea este refuzată.
// index.ts
type A = <T>(x: T) => T;
type B = <T>(x: T[]) => T;
let a: A = x => x;
let b: B = x => x[0]!;
a = b;
console.log(a, b);
Rezultat (tsc 5.9)
$ npx tsc
index.ts(5,1): error TS2322: Type 'B' is not assignable to type 'A'.
Types of parameters 'x' and 'x' are incompatible.
Type 'T' is not assignable to type 'T[]'.
$ npx tsc # cu "noStrictGenericChecks": true
tsconfig.json(3,5): error TS5102: Option 'noStrictGenericChecks' has been removed. Please remove it from your configuration.
Greșeli frecvente
- Să cauți o opțiune care să oprească eroarea. Nu mai există; repară tipurile.
Comenzi înrudite
strictFunctionTypes: Verifică corect parametrii când atribui o funcție altui tip de funcție (fără bivarianță la parametri).strict: Pornește dintr-o singură mișcare toate verificările stricte de tipuri (strictNullChecks, noImplicitAny și celelalte).