web-dev-qa-db-ja.com

Typescript:タイプXには、タイプYの長さ、ポップ、プッシュ、連結などの次のプロパティがありません。 [2740]

私は製品のインターフェースを持っています:

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 []'の次のプロパティがありません:length、pop、Push、concat、および26など。 [2740]

productsArray変数への入力を削除するとエラーが削除されますが、サーバーの応答はProductsのタイプのオブジェクトの配列であるため、これが機能しない理由はわかりません。

35
mpro

私は同じ問題を抱えていて、次のように解決しました

export class Notification {
    id: number;
    heading: string;
    link: string;
}

そしてnofificationService書き込み

allNotifications: Notification[]; 
  //NotificationDetail: Notification;  
  private notificationsUrl = 'assets/data/notification.json';  // URL to web api 
  private downloadsUrl = 'assets/data/download.json';  // URL to web api 

  constructor(private httpClient: HttpClient ) { }

  getNotifications(): Observable<Notification[]> {    
       //return this.allNotifications = this.NotificationDetail.slice(0);  
     return this.httpClient.get<Notification[]>

(this.notificationsUrl).pipe(map(res => this.allNotifications = res))
      } 

およびコンポーネントの書き込み

 constructor(private notificationService: NotificationService) {
   }

  ngOnInit() {
      /* get Notifications */
      this.notificationService.getNotifications().subscribe(data => this.notifications = data);
}
0
Shah Shahid