Я полагаю, что в примере: selectedUserId: number | null;
- ошибка, поскольку позже они определяют пользователя как:
export interface User {
id: string;
name: string;
}
Тем не менее, зачем использовать строку, а не числа?
1) Я думаю, для лучшей глобальной поддержки. Если люди используют базу данных с идентификаторами, хранящимися в виде чисел, тогда вы можете просто сохранить их в виде строки без каких-либо проблем. Но если бы это была строка, было бы сложнее сохранить ее как число ...
2) (и реальный аргумент здесь) многие люди используют UUID для генерации некоторых идентификаторов непосредственно из внешнего интерфейса. Это позволяет вам гарантировать, что идентификатор будет уникальным *, даже если он сгенерирован из внешнего интерфейса, и, таким образом, вы можете работать в автономном режиме (создавать ресурс и по-прежнему работать с ним до синхронизации с внутренним интерфейсом), что в противном случае было бы намного сложнее.
Даже если вы не планируете поддерживать автономный режим в своем приложении, есть более распространенный вариант использования: оптимистическое обновление. Таким образом, вы генерируете идентификатор для своего ресурса, сохраняете свой ресурс в своем магазине REDUX или там, где вы хотите его сохранить, а затем делаете запрос на добавление его в бэкэнд для ex. Если все хорошо, тогда хорошо! В противном случае просто отобразите сообщение через несколько секунд, в котором говорится, что ресурс не может быть сохранен, и в конечном итоге предложите повторить попытку. Но каждый раз, когда это будет работать, пользователь будет рад мгновенно взаимодействовать с вашим приложением, не ощущая никаких «зависаний» из-за сети.
*: это не на 100% гарантировано, но если вы читаете статьи о UUID, шансы сгенерировать уже существующий очень, очень, очень малы. Кроме того, вы можете проверить на сервере, что в POST идентификатор не существует и т. Д.