Relacionado con:
Especifique el tipo de retorno en la función de flecha de TypeScript
¿Por qué aparece el error "El literal del objeto solo puede especificar propiedades conocidas"?
En:
hooks/Test.tsx :
import { useState, useEffect } from 'react' interface GeoLocationData { isGeoLocationDataSet: boolean lat: string lon: string errorCode: number, errorMsg: string } export const Test = (): GeoLocationData => { const [geoLocationData, setGeolocationData] = useState<GeoLocationData>({ isGeoLocationDataSet: false, lat: '', lon: '', errorCode: 0, errorMsg: '' }); // stuff here return geoLocationData } geoLocationData no se convierte para escribir GeoLocationData cuando se usa en otro componente:
import React from 'react'; import './App.css'; import { Test} from './hooks/Test'; function App() { const geoLocation = Test return ( <div className="App"> <body className="App-body"> <p> {geoLocation.isGeoLocationDataSet ? JSON.stringify(geoLocation) : "No"} </p> </body> </div> ); } export default App;errar:
Property 'isGeoLocationDataSet' does not exist on type '() => GeoLocationData'.ts(2339) Pero isGeoLocationDataSet existe como accesorio en GeoLocationData .
Los siguientes () :
export const Test = (): GeoLocationData => ({ const [geoLocationData, setGeolocationData] = useState<GeoLocationData>({ isGeoLocationDataSet: false, lat: '', lon: '', errorCode: 0, errorMsg: '' }); // stuff here return geoLocationData })produce:
Type '{ const: [GeoLocationData, React.Dispatch<React.SetStateAction<GeoLocationData>>]; return: any; }' is not assignable to type 'GeoLocationData'. Object literal may only specify known properties, and 'const' does not exist in type 'GeoLocationData'.pero el retorno sigue siendo un.
Test es una función, por lo que debe llamarla para obtener el valor devuelto del tipo GeoLocationData :
const geoLocation = Test();