6. Czym różni się typ `any` od `unknown`?

Typ any jest tzw. wildcardem - pozwala zastąpić każdy inny typ. Jego właściwością jest, że można założyć, że reprezentuje dowolny inny typ. Można odwołać się do dowolnego pola lub funkcji obiektu oznaczonego jako any i kompilator nie zwróci błędu.

Typ unknown jest przeciwieństwem any - zmienna tego typu nie może być traktowana jako żaden konkretny typ ani nie jest możliwe odwołanie do jakichkolwiek właściwości obiektu tak długo, jak nie zostanie wykonane rzutowanie (casting) do któregoś konkretnego typu.

type ObjType = { field: { nestedField: string } } const obj: ObjType = {field: {nestedField: "nestedValue"}}; console.info(obj.field.nestedField) // nestedValue console.info((obj as any).notExistingField) // undefined, no Error thrown console.info((obj as any).field.nestedField) // nestedValue console.info((obj as unknown).notExistingField) // Compilation error - Object is of type 'unknown'. console.info((obj as unknown).field.nestedField) // Compilation error - Object is of type 'unknown'.
devFlipCards 2024

Akceptujesz cookies?

Cookies to niewielkie fragmenty danych zapisywane lokalnie na twoim urządzeniu. Pomagają w funkcjonowaniu naszej strony - zapisują Twoje ustawienia strony takie jak motyw czy język. Poprawiają funkcjonowanie reklam i pozwalają nam na przeprowadzanie analityki odwiedzin strony. Korzystając ze strony zgadasz się na ich wykorzystanie.