1
resposta

Problema na compilação

Boa noite pessoal,

Depois que fiz os procedimentos da aula 08 (Isolando acesso em serviços), o navegador começou a mostrar o seguinte erro:

Compiled with problems:X

ERROR

src/app/photos/photo/photo.service.ts:13:14 - error TS2314: Generic type 'Array<T>' requires 1 type argument(s).

13         .get<Array[]>(API + '/flavio/photos')

Utilizei o Array no lugar de Object, pois não estava funcionando e encontrei essa solução em uma das postagens e funcionou, porém após o isolamento do acesso da API agora mostra o erro acima. Segue o código:

Arquivo photo.services.ts

import { HttpClient } from "@angular/common/http";
import { Injectable } from "@angular/core";

const API = 'http://localhost:3000';

@Injectable({providedIn: 'root'})
export class PhotoService {

    constructor(private http: HttpClient){}

    listFromUser(userName: string){
        return this.http
        .get<Array[]>(API + '/flavio/photos')

      } 
    }

Arquivo app.components.ts

import { Component } from '@angular/core';
import { PhotoService } from './photos/photo/photo.service';

interface Array{
  url: string;
  description: string;
}


@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  photos: Array[] = [];

  constructor(photoService: PhotoService){
    photoService
    .listFromUser('flavio')
    .subscribe(photos => this.photos = photos)
  }

}

Alguém pode me ajudar? Obrigada.

1 resposta

Oi Thais!

Vejo o seguinte problema, você declarou uma interface com o mesmo nome quando queremos criar um array. Dessa forma o compilador não sabe ao certo que você está querendo usar a interface ao invés de um Array da linguagem.

Sugiro que você renomeie a sua interface Array. É bem provável que irá funcionar :)