A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Tipado en peticiones

13/25
Recursos

Aportes 10

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

No entend铆 mucho esta clase, pensaba que cuando imprimi茅ramos users, estar铆a transformado a nuestra interfaz, pero lo 煤nico que v铆 fue que ah铆 est谩 imprimiendo los resultados exactamente igual como vienen en la petici贸n. 驴?

Pude notar que no trae los datos acorde a la interfaz, asi que aqui les dejo un ejemplo para traer datos de acuerdo a la interfaz:

getRandomUsers(): Observable<User[]> {
    return this.http.get('https://randomuser.me/api/?results=2').pipe(
      map((response: any) => response.results.map(user => {
        return {
          email: user.email,
          gender: user.gender,
          phone: user.phone,
        } as User;
      }))
    );
  }

Tambi茅n Typescript nos permite utilizar genericos por lo que podemos hacer un servicio que aplique para cualquier petici贸n HTTP. Aqu铆 un ejemplo para una petici贸n GET:

// Service
public get<T>(url: string): Observable<T> {
    return this.http.get<T>(url);
  }

// Smart component
 this.service.get<User>('test/api/v1/users').subscribe(...);
 this.service.get<Product>('test/api/v1/products').subscribe(...);

el pipe/map es un clasico para estas operaciones pero no tenia idea que se podia castear con 鈥榓s鈥. Buen dato.

Genial, esto me pasa con API (en Laravel), me sera muy 煤til!

Hola, me ha gustado mucho el curso. Ten铆a una duda con respecto a tipar la data as铆, pues tambi茅n he visto el uso de un patr贸n llamado adept, en el que tenemos nuestra clase de c贸mo la manejamos en la aplicaci贸n y adicional creamos una interfaz de c贸mo llega la data, y luego realizamos un proceso de cast para pasar de dicha interfaz a mi clase. 驴Cual ser铆a mejor?

Que tal
Con as permitimos que Ts no haga validaciones de tipado y conf铆e en nosotros, el profesor lo coloca en su ejemplo porque no llega a extraer precisamente la interfaz User, sin embargo podemos extraer precisamente esa informaci贸n y adem谩s evitar usar as y empezar a hacer validaciones de tipo:

  getRandomUsers(): Observable<User[]> {
    return this.http.get('https://randomuser.me/api/?results=2').pipe(
      map((responseObservable: any) => responseObservable.results.map((user:any) => {
        let userFiltered:User= {
          email: user.email,
          gender: user.gender,
          phone: user.phone,
          };
        return userFiltered;
      }))
    );
  }

De esta forma la interfaz se respeta, por ejemplo si colocamos otro campo dentro de userFiltered como cell: user.cell, tendremos un error ya que no cumplimos con la interfaz de User, lo mejor siempre ser谩 cumplir con el contrato de la interfaz.
Clase de referencia: https://platzi.com/clases/1869-typescript/27978-aserciones-de-tipo/
Saludos 馃槂

easy

Esto es genial!

Esto es genial鈥