TS2352
Podejrzana konwersja typu
Conversion of type 'string' to type 'number' may be a mistake because neither type sufficiently overlaps with the other.Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Asercja typu przeskakuje między niepowiązanymi typami i nie wykona konwersji w czasie działania, którą sugeruje zapis.
Odtworzenie
const count = '12' as number
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
Asercje zmieniają punkt widzenia kontrolera, nigdy wartość JavaScript. Tekst zadeklarowany jako `number` wciąż jest tekstem w czasie działania, więc TypeScript blokuje najbardziej oczywiste przeskoki i prosi o jawny zamiar.
Naprawy
- 01
const count = Number('12')
Wykonaj prawdziwą konwersję w czasie działania, gdy wartość ma stać się liczbą.
- 02
const input: unknown = '12' if (typeof input !== 'string') { throw new Error('Expected text') } const count = Number(input)
Dla danych zewnętrznych sprawdź wartość z `unknown`, zanim ją skonwertujesz.
Wniosek
`as` nie jest rzutowaniem w sensie wykonania. Parsuj lub sprawdzaj wartości; asercje zostaw dla informacji, których kompilator naprawdę nie może zobaczyć.
