Тип «DocumentData» нельзя назначить типу «IProduct» - PullRequest
0 голосов
/ 18 апреля 2020

Я только начинаю использовать машинопись, надеюсь, вы мне поможете, я не знаю, как решить эту ошибку

Интерфейсы

export interface IProduct {
  name: string;
  price: number[];
    stock: number;
    createdAt: firestore.Timestamp
}

export interface IDataProduct {
    [key: string]: IProduct
}

Получить ProductList из хранилища

export const fetchProducts = () => 
    async (dispatch: Dispatch, getState: () => any, { db }: IServices) => {        
        try {
            const snaps = await db.collection('productos').get()

            let products: IDataProduct = {}
            snaps.forEach(x => {
             return products[x.id] = x.data()
            })

            dispatch(fetchSucess(products))
    } catch (error) { dispatch(fetchError(error)) }
}

Ошибка " Тип« DocumentData »не может быть назначен типу« IProduct ». Тип« DocumentData »отсутствует в следующих свойства из типа 'IProduct': имя, Precio, акции, созданныеAt " здесь return products[x.id] = x.data()

x return

{
id: "IgzlwT6OlazrlBTmAIj4"
ref: (...)
exists: (...)
metadata: t
im: t {xT: FirebaseAppImpl, BT: t, INTERNAL: {…}, OT: t, WT: "[DEFAULT]", …}
em: t {path: n}
lm: n {key: t, version: t, Ee: t, te: false, hasCommittedMutations: false}
dm: false
fm: false
om: undefined
__proto__: t
}

и x.data () return

{
stock: 64
name: "ProductName 50Kg"
price: (3) [24, 23, 20]
createdAt: t {seconds: 1587099600, nanoseconds: 0}
}

Я не могу решить эту проблему

1 Ответ

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

Если вы хотите сделать предположение, что x.data() возвращает объект, полностью соответствующий интерфейсу IProduct, вам придется привести его:

products[x.id] = x.data() as IProduct
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...