Как установить типы объекта до его инициализации? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть sprites объект, который передается компоненту. Первоначально это пустой объект, но его родительский компонент делает вызов конечной точкой отдыха для заполнения этого sprites объекта. Какой лучший способ справиться с этим?

Нужно ли сделать опцию sprites опциональной? Ниже приведен код ...

type SpriteProps = {
 sprites: {}
 name: string
 loading: boolean
}

const Sprite = ({ sprites = {}, name, loading }: SpriteProps) => {

Спасибо !!

1 Ответ

0 голосов
/ 23 апреля 2020

То, что вы просите, невозможно. Когда вы определяете тип в интерфейсе как требуется (то есть он не имеет ?), это означает, что он должен быть определен:

type SpriteProps = {
 sprites: {}
 name: string
 loading: boolean
}

// This is incorrect
// SpriteProps is saying all properties are required
// But right now `prop.name` for example is not
const prop: SpriteProps = {};

Если вы должны заполнить вещи после того, как определили тип, Вы должны сделать поля необязательными. Вы можете сделать одно из двух:

type SpriteProps = {
 sprites?: {}
 name?: string
 loading?: boolean
}

// This is fine now
const prop: SpriteProps = {};

или

type SpriteProps = {
 sprites: {}
 name: string
 loading: boolean
}

// This is fine now
const prop: Partial<SpriteProps> = {};

Другой вариант - создать объект с пустыми значениями для этих полей:

type SpriteProps = {
 sprites: {}
 name: string
 loading: boolean
}

// This is fine now
const prop: Partial<SpriteProps> = {
  sprites: {},
  name: '',
  loading: true,
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...