Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

390
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

0

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

about 4 years ago · Juan Pablo Isaza Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Assistente virtual