Tvrdnja tipa type assertion govori kompajleru "vjeruj mi, ova vrijednost je tipa X" koristeći as. To ne vrši nikakvu runtime konverziju ili provjeru — samo mijenja kako kompajler tretira vrijednost.
el = .() ;
el. = ;
data = .(str) ;
Tvrdnja tipa type assertion govori kompajleru "vjeruj mi, ova vrijednost je tipa X" koristeći as. To ne vrši nikakvu runtime konverziju ili provjeru — samo mijenja kako kompajler tretira vrijednost.
el = .() ;
el. = ;
data = .(str) ;
Knjižnica IT pitanja za razgovore za posao s detaljnim odgovorima — od Juniora do Seniora.
DonirajTvrdnja prepisuje sudbu kompajlera — ako griješiš, dobit ćeš runtime pad bez upozorenja:
const x = "hello" as unknown as number; // double assertion — compiler stops complaining
x.toFixed(2); // 💥 runtime error: x.toFixed is not a function
Tvrdnja ne čini vrijednost tog tipa; samo šuti provjeru. Preuzeo si odgovornost za ispravnost od kompajlera.
// 1. type guard — actually verify at runtime
if (typeof input === "string") { /* input is string, proven */ }
// 2. validation library (zod) for external data
const user = UserSchema.parse(data); // throws if shape is wrong
as const je drugačijeconst point = { x: 1 } as const; // not a risky cast — narrows to literal/readonly
Tvrdnje su ponekad potrebne (DOM API-ji, sužavanje unknown koje si već provjerio), ali svaka je mjesto gdje kompajler ne može te zaštititi.
Preferaj type guards ili schema validaciju za nepouzdane podatke, i svaki as tretira kao mali, namenski "bolje znam" za koji moraš biti siguran.