Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

350
Vistas
Trabajando con interfaces TypeScript- error: la propiedad no existe

Construí esta interfaz

 export interface UserInfo { success?: boolean, user?: User, employer?: Employer, hr?: Hr }

Ahora cuando hago esto

 let data = await loginUser(loginData); console.log(data.success);

código del método loginUser:

 import {createApi, fetchBaseQuery} from "@reduxjs/toolkit/query/react"; import {BASE_API_ENDPOINT, LOGIN_API_ENDPOINT} from "../../constants/apis"; import {LoginData, UserInfo} from "../../models/apis/UserData"; export const loginApi = createApi({ reducerPath: 'loginReducer', baseQuery: fetchBaseQuery({ baseUrl: BASE_API_ENDPOINT }), endpoints: (builder) => ({ loginUser: builder.mutation<UserInfo, LoginData> ({ query: (data: LoginData) => ({ url: LOGIN_API_ENDPOINT, method: "POST", body: data }), transformResponse: (rawResult : UserInfo) => { return rawResult } }) }) }) export const { useLoginUserMutation } = loginApi;

me sale este error

La propiedad 'éxito' no existe en el tipo '{ datos: UserInfo; } | { error: FetchBaseQueryError | error serializado; }'.

Soy un novato con mecanografiado y quiero acceder al objeto UserInfo desde { data: UserInfo; } pero no puedo hacerlo. ¿Alguien puede ayudar?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Esto sucede porque la propiedad "éxito" existe solo en el tipo UserInfo. Dado que es un tipo de unión, el compilador no puede estar seguro de si la función devuelve un objeto de datos (con el tipo UserInfo) o un objeto de error (FetchBaseQueryError | SerializedError)

Para acceder a la propiedad de éxito de la respuesta, primero puede verificar si existe

 if("success" in data){ console.log(data.success) }

Lea más sobre los tipos de unión aquí:
https://www.typescriptlang.org/docs/handbook/unions-and-intersections.html https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types

about 4 years ago · Juan Pablo Isaza Denunciar

0

intente usar loginUser(loginData).unwrap() en el componente

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema real se encuentra dentro de la función transformResponse y cómo "canaliza" más los datos de respuesta.

 transformResponse: (rawResult : UserInfo) => { return rawResult }

rawResult probablemente no sea del tipo UserInfo , sino { data: UserInfo } . Y eso es exactamente lo que ves en el error que obtienes.

Entonces, para solucionarlo, la función debería verse así:

 transformResponse: (rawResult: { data: UserInfo }) => { return rawResult.data }

Y luego su código debería funcionar como se esperaba, if ningún otro condicionante.

 let data = await loginUser(loginData); console.log(data.success);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda