У меня возникла проблема при составлении карты элементов корзины покупок. Получение этой ошибки TS2339: свойство 'items' не существует для типа 'unknown' - PullRequest
0 голосов
/ 01 октября 2019

shopping-cart.service.ts

import { Product } from 'shared/models/product';
    import 'rxjs/add/operator/take';
    import 'rxjs/add/operator/map';
    import { take } from 'rxjs/operators';
    import { ShoppingCart } from 'shared/models/shopping-cart';
    import { Observable } from 'rxjs';

    @Injectable()
    export class ShoppingCartService {
      constructor(private db: AngularFireDatabase) {}

      async getCart(): Promise<Observable<ShoppingCart>> {
        const cartId = await this.getOrCreateCartId();
        return this.db
          .object('/shopping-carts/' + cartId)
          .map(x => new ShoppingCart(x.items));  **// Getting error at x.items **
      }

      async addToCart(product: Product) {
        this.updateItem(product, 1);
      }

Я получаю эту ошибку

Ошибка TS2339: свойство 'items 'не существует по типу' unknown '

Ответы [ 4 ]

0 голосов
/ 01 октября 2019

У вас нет типа на x. По умолчанию неявный тип 'any' не разрешен. Таким образом, у вас есть 3 варианта выбора, которые вы можете использовать [], вы можете установить тип на любой

 .map((x:any) => new ShoppingCart(x.items));

или набрать его

interface CartResponse {
    items:Array;
}

.map((x:CartResponse) => new ShoppingCart(x.items));
0 голосов
/ 01 октября 2019

Попробуйте x['items'], если вы точно знаете, что x является допустимым объектом. В противном случае установите console.log(JSON.stringify(x)), чтобы увидеть, что находится внутри x.

0 голосов
/ 01 октября 2019

Попробуйте указать тип / интерфейс X, если вы знаете, в противном случае используйте x: any в аргументе map (если вы используете lint, то выдаст предупреждение)

0 голосов
/ 01 октября 2019

Как я вижу в коде, вам не хватает этого импорта

import { Injectable } from '@angular/core';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...