TypeScript
unknown
vs. any
w TypeScript
W TypeScript typ unknown
jest bezpieczniejszym odpowiednikiem typu any
. Podczas gdy any
pozwala nam na wszystko, unknown
wymusza sprawdzanie typu przed wykonaniem operacji.
let foo: any = "hello";
foo = foo.split("").reverse().join(""); // Zadziała, ale...
let foo2: any = { greet: "hello" };
foo2 = foo.split("").reverse().join(""); // TS nie wykryje błędu, ale dostaniemy błąd w konsoli
let bar: unknown = "world";
bar = bar.split("").reverse().join(""); // TS podkreśli nam błąd w edytorze, ponieważ nie możemy użyć metody "split" na nieznanym typie.
bar = (bar as string).split("").reverse().join(""); // OK, ponieważ zadeklarowaliśmy typ, ale może być lepiej...
bar = typeof bar === "string" ? bar.split("").reverse().join("") : bar; // Jeszcze lepiej, ponieważ sprawdziliśmy typ
Z unknown
TypeScript zapewnia, że musiz sprawdzić typ przed wykonaniem operacji, więc jest to dużo bezpieczniejsze podejście niż any
.