27. Jak możesz stworzyć głęboko readonly typ w TypeScript?

Aby stworzyć głęboko readonly typ w TypeScript, można użyć rekursji w połączeniu z wbudowanym typem Readonly. W tym celu tworzymy własny typ rekurencyjny, który sprawdza, czy dany typ jest obiektem, i jeżeli tak, stosuje Readonly do wszystkich jego właściwości, łącznie z właściwościami obiektów zagnieżdżonych.

Przykład:

type DeepReadonly<T> = T extends Function ? T : T extends object ? { readonly [K in keyof T]: DeepReadonly<T[K]> } : T; interface User { name: string; details: { age: number; address: string; }; } const user: DeepReadonly<User> = { name: 'John', details: { age: 30, address: '123 Street' } }; user.details.age = 31; // Błąd, 'age' jest readonly user.name = 'Alice'; // Błąd, 'name' jest readonly

Typ DeepReadonly<T> rekursywnie stosuje readonly do wszystkich właściwości obiektu, w tym również tych, które są obiektami wewnętrznymi, zapewniając, że cały obiekt jest tylko do odczytu.

devFlipCards 2025

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.