#typescript
#typescript
Вопрос:
Как мне использовать типы, когда я хочу построить объект?
НАПРИМЕР. Если у меня есть:
interface Foo {
a: string;
b: string;
c: string;
d: string;
}
interface Bar extends Partial<Foo>{}
const foo: Foo = useMemo(() => {
const bar: Bar = {}
bar.a = 'a';
bar.b = 'b';
bar.c = 'c';
return bar;
,[])
только это приводит к ошибке типа:
Type 'Partial<Foo>' is not assignable to type 'Foo'.
Types of property 'a' are incompatible.
Type 'string | undefined' is not assignable to type 'string'.
Type 'undefined' is not a
Комментарии:
1. это ожидаемо, не так ли? но вы не можете просто использовать утверждение типа?
const bar: Foo = {} as Foo
?2. @Estradiaz Я новичок в Typescript. Очевидно, я слишком много думаю об этом!
3. Есть ли причина для создания объекта таким образом? (против выполнения
const bar = { a: 'a' ... }
)4. @AlekseyL. Я просто упрощаю пример, в реальном примере есть несколько сложных вычислений
5. Затем
const bar = {} as Foo
и отбросьте частичный.. Или лучше извлекать сложные части в функции и создавать объект за один раз
Ответ №1:
Если свойства сложны для создания, я бы рекомендовал сначала сохранить их в локальных файлах, а затем напрямую возвращать правильный тип:
interface Foo {
a: string;
b: string;
c: string;
d: string;
}
const foo: Foo = useMemo(() => {
const a = 'a';
const b = 'b';
const c = 'c';
const d = 'd';
return { a, b, c, d };
},[])