#reactjs #typescript
Вопрос:
У меня есть простой объект с двумя полями имя и возраст, изначально они определены как неопределенные, а позже в коде будет присвоено значение
const s={
name:undefined,
age:undefined
}
s.name="Test" //error
когда я пытаюсь присвоить какое-либо значение своим атрибутам, это приводит к ошибке машинописи
Type '"Test"' is not assignable to type 'undefined'.
Может ли кто-нибудь объяснить, почему я получаю эту ошибку в typescript и как ее исправить
Комментарии:
1. есть ли причина указывать его как неопределенный вместо null ?
2. Вы хотели сделать тип необязательным?
Ответ №1:
Вы явно не определили тип для s
, поэтому компилятор пытается вывести его на основе предоставленных значений.
Предполагаемый тип s
является:
{
name: undefined;
age: undefined;
}
Вы задали явный тип, например:
type User = {
name: string | undefined;
age: number | undefined;
};
const s: User = {
name: undefined,
age: undefined
};
s.name = "Test"; //should work
Ответ №2:
Если вы посмотрите на предполагаемый тип s
, вы увидите, что это
{
name:undefined;
age:undefined;
}
TypeScript не может сделать вывод, что здесь может быть разрешен какой-либо другой тип, потому что вы не предоставили эту информацию.
Создайте тип:
interface Person{
name: string | undefined;
age: number | undefined;
}
затем объявите s
с помощью этого типа:
const s:Person = {
name: undefined;
age: undefined;
}