TypeScript · Senior · Pytanie 7 z 75
Po co są typy „branded”?
type UserId = string & { readonly __brand: 'UserId' };- ✓Poprawna odpowiedź: Aby rozróżnić strukturalnie identyczne typy, np.
UserIdiOrderId - 2Aby dodać właściwość
__branddo wszystkich stringów w runtime - 3Aby przyspieszyć porównywanie typów stringowych przez kompilator
Wyjaśnienie
Typowanie strukturalne uznaje wszystkie stringi za zgodne, więc deleteUser(orderId) się skompiluje. Brand to fikcyjna właściwość istniejąca tylko w typach; wartość tworzy funkcja-konstruktor ze sprawdzeniem (toUserId(s): UserId). To emulacja typowania nominalnego.