Тип '{} []' нельзя назначить типу 'ShoppingCartItem []' - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь решить эту проблему в течение длительного времени. Компилятор показывает ошибку, но программа все равно работает правильно, если я перекомпилирую.Помогите разобраться с ошибкой. Ошибка:

Тип '{} []' нельзя назначить типу 'ShoppingCartItem []'.Тип «{}» нельзя назначить типу «ShoppingCartItem».Свойство 'product' отсутствует в типе '{}'.

My Service.ts
async getCart():Promise<code><Observable<ShoppingCarts>> {let cartId = await localStorage.getItem ('cartId') return this.shoppingCartCollection.doc (cartId) .collection ('items'). valueChanges () .map (data => new ShoppingCarts (data))}} Мой класс и интерфейс

    export interface ShoppingCartItem{
    product:Product;
    quantity:number;
}
export class ShoppingCarts{
    constructor(public shoppingItems:Array<ShoppingCartItem>){}
    get getProducts(){
        return this.shoppingItems.filter(element => (element.quantity != 0));
    }
    get totalItemsCount(){
        let count = 0;
        for (let product of this.shoppingItems)
            count += product.quantity
        return count;
    }
}

Интерфейс продукта

export interface Product {
    title:string,
    price:number,
    $key:string,
    category:string,
    imageUrl:string
};


Объект, который я получаю:

(5) [{…}, {…}, {…}, {…}, {…}]
0:product:{$key: "02loEh33W51bSkfBXgqN", category: "Bread", imageUrl: "https://upload.wikimedia.org/wikipedia/commons/1/1d/Bagel-Plain-Alt.jpg", price: 2.4, title: "Bagel Bread"}
quantity:2
__proto__:Object
1:product:{$key: "1xrkYBMg4GYh4JKe8wpp", category: "Fruits", imageUrl: "http://www.picserver.org/pictures/apple01-lg.jpg", price: 5, title: "Apple"}
quantity:4
__proto__:Object
2:
product:{$key: "3frhYw5TlyGnnwM9opb5", category: "Fruits", imageUrl: "https://upload.wikimedia.org/wikipedia/commons/c/c4/Orange-Fruit-Pieces.jpg", price: 4.5, title: "Orange"}
quantity:1
__proto__:Object
3:{product: {…}, quantity: 0}
4:{product: {…}, quantity: 1}
length:5

1 Ответ

0 голосов
/ 29 мая 2018

В отсутствие точной строки, в которой произошла ошибка, или части кода, я воспроизвел ошибку с этим кодом:

interface ShoppingCartItem {
  product: string;
}

class ShoppingCart implements ShoppingCartItem {
  product: string; 
}

const t: ShoppingCartItem[] = [{}]; // TS2322 [..]  Property 'product' is missing in type '{}'

Чтобы решить эту проблему, просто введите приведение пустого объекта:

const t: ShoppingCartItem[] = [{} as ShoppingCartItem];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...