Задать вопрос
@daniel_wesson

TypeScript: как убрать null из свойства объекта?

Имеется следующий код в упрощенном виде:

type User = {
	id: number
	name: string
}

const { data: user, error } = await useFetch<User>('/users/1')

if (error.value?.statusCode === 404) {
	throw createError({ statusCode: 404 })
}

const userId: number = user.id


Проблема в том, что useFetch вернет тип "User | null" из-за чего чтобы получиться любое свойство, придется написать "(user as User).id". Что можно сделать чтобы явно указать, что user не будет являться null?
  • Вопрос задан
  • 251 просмотр
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
if (error.value?.statusCode !== 404) не гарантирует, что в user не будет null, мало ли там ошибка 50х или даже нет ошибки, а просто сервер глюканул.

Так что у тебя два варианта:
1. То что от тебя хочет typescript, явная проверка:
if (!user) {
  throw new Error('empty responce')
}

2. Исправление типа, если ты очень доверяешь своему серверу:
а) Вариант предложенный Lynn «Кофеман» с явным кастом;
б) Обёртка над useFetch которая внутри себя скастует тип по новому или изменение самого типа useFetch.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы