У вашего вопроса есть две стороны.
Прежде всего, вы не можете назначить свойства нулевого или неопределенного объекта. Другими словами, если ваша переменная инициализирована как null
, вы не можете получить доступ к одному из его свойств и присвоить ему значение. Это ошибка JavaScript.
Затем следует ошибка TypeScript. Похоже, вы хотите объявить необязательные свойства для вашего объекта. Вы можете сделать это с помощью оператора ?
:
const body: {
name?: string,
photo?: {
fileName?: string,
file?: NodeJS.ReadableStream,
encoding?: string,
mimetype?: string,
sizeInBytes?: number,
publicUrl?: string
},
token?: string
} = null;
или с помощью Partial
generi c типа:
interface BodyType {
name: string,
photo: {
fileName: string,
file: NodeJS.ReadableStream,
encoding: string,
mimetype: string,
sizeInBytes: number,
publicUrl: string
},
token: string
}
const body: Partial<BodyType> = {};
Для получения дополнительной информации о Partial
generi c, посмотрите здесь здесь .
Таким образом, вы сможете указать тип вашего объекта, не заполняя каждое объявленное свойство при инициализации. В идеале вы не должны использовать Partial
, за исключением определенных случаев c, а вместо этого объявлять, какие свойства являются необязательными, а какие - обязательными для интерфейса.
В любом случае это зависит от того, какие у вас типы жадный. Имеет ли смысл иметь интерфейс BodyType
со всеми обязательными реквизитами? Затем go для подхода Partial
. Вы знаете заранее, какие свойства могут быть неопределенными, а какие нет? Затем используйте оператор ?
.