代码之家  ›  专栏  ›  技术社区  ›  mpro

类型脚本:类型x缺少类型y length、pop、push、concat和其他26个属性。〔2740〕

  •  0
  • mpro  · 技术社区  · 6 年前

    我有产品界面:

    export interface Product{
      code: string;
      description: string;
      type: string;
    }
    

    使用方法调用产品终结点的服务:

      public getProducts(): Observable<Product> {
        return this.http.get<Product>(`api/products/v1/`);
      }
    

    以及使用此服务获取产品的组件。

    export class ShopComponent implements OnInit {
        public productsArray: Product[];
    
        ngOnInit() {
            this.productService.getProducts().subscribe(res => {
              this.productsArray = res;
            });
        }
    }
    

    在这种状态下,我会出错:

    [ts]类型“product”缺少类型中的以下属性 “product[]”:长度、弹出、推送、concat和26个以上。〔2740〕

    正在删除上的键入内容 productsArray 变量删除了错误,但不了解这不起作用的原因,因为服务器响应是类型为的对象数组。 Products ?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Amit Chigadani    6 年前

    从返回的类型 http.get() getProducts() 应该是 Observable<Product[]>

    public getProducts(): Observable<Product[]> {
        return this.http.get<Product[]>(`api/products/v1/`);
    }
    
        2
  •  1
  •   Fredrik_Borgstrom    6 年前

    您忘记将getProducts返回类型标记为数组。在getproducts中,它表示将返回单个产品。所以把它改成:

    public getProducts(): Observable<Product[]> {
        return this.http.get<Product[]>(`api/products/v1/`);
      }