javascript - 打字稿将任何类型转换为类型
问题描述
相关:
在:
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
GeoLocationData
在另一个组件中使用时不强制转换为类型:
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;
呃:
Property 'isGeoLocationDataSet' does not exist on type '() => GeoLocationData'.ts(2339)
但isGeoLocationDataSet
确实作为道具存在于GeoLocationData
.
以下()
:
export const Test = (): GeoLocationData => ({
const [geoLocationData, setGeolocationData] = useState<GeoLocationData>({
isGeoLocationDataSet: false,
lat: '',
lon: '',
errorCode: 0,
errorMsg: ''
});
// stuff here
return geoLocationData
})
产生:
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'.
但回报仍然是一个。
解决方案
Test
是一个函数,所以你需要调用它来获取 type 的返回值GeoLocationData
:
const geoLocation = Test();
推荐阅读
- symfony - Symfony 4 自定义约束 atPath 不起作用
- c# - MongoDb 使用过滤器匹配列表
- docker - 一台主机上有多个 GitLab Runner Docker 实例?
- android - react-native 中使用 AsyncStorage.setItem() 持久化的数据可以从本机代码中获取吗?
- cmake - 使用 Clion 编译 .o 文件
- java - MapStruct:BeanMapping 和 Mapping 的区别
- node.js - 如何使用 Angular 应用程序作为 Node.js 的视图引擎
- postgresql - PostgreSQL:更新大表
- sql - 如何从具有相似列名的不同不相关表中获取列?
- c# - 如何检查字符串是否包含一定数量的字母和数字C#