类型'{} []'不能分配给'ShoppingCartItem []'

时间:2018-05-29 03:13:40

标签: angular typescript google-cloud-firestore

我试图长时间解决这个问题。编译器显示错误,但如果我重新编译,程序仍然可以正常运行。帮助克服错误。 错误:

  

类型'{} []'不能分配给'ShoppingCartItem []'类型。类型   “{}”不能分配给“ShoppingCartItem”类型。       “{}”类型中缺少“属性'产品”。

我的服务
async getCart():Promise<Observable<ShoppingCarts>>{ let cartId = await localStorage.getItem('cartId') return this.shoppingCartCollection.doc(cartId).collection('items').valueChanges() .map(data => new ShoppingCarts(data)) } 我的课程和界面

<Observable<ShoppingCarts>>

产品界面

    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
};

1 个答案:

答案 0 :(得分:0)

由于缺少发生错误的确切行或代码的一部分,我使用此代码重现了错误:

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];