将JS转换为TS-React Hooks

时间:2019-08-09 00:08:23

标签: typescript react-hooks

我正在使用带有Typescript的React制作一个基本的聊天应用程序。我了解TS需要类型声明。

我想将其从JS转换为TS,需要全部更改以及在每种情况下在哪里声明类型?

代码

function App() {

 const [rooms, setRooms]   = useState(''); // type str
 const [roomId, setRoomId] = useState(''); // type str
 const [user, setUser]     = useState(''); // type str

function updateRoom(id) {

 return id === '' ? setRoomId('') : setRoomId(id) // ??

}

return (
 <div className="app">
   <div className="room">
   {rooms.map((room, index) => (
     <Room key={index} index={index} room={room} />
   ))}
 </div>
</div>
)
}

TS

function App() {

   const [rooms, setRooms] type Str = useState(''); 

}

会是这样吗?

1 个答案:

答案 0 :(得分:1)

Typescript只需要在无法推断的地方键入即可。

{dragging: true, start_x: undefined, start_y: undefined, offset_x: NaN, offset_y: NaN}

由于const [rooms, setRooms] = useState(''); 的键入方式,typescript知道在传递字符串时,它将返回类似此类型的内容:

useState

哪个会破坏您的价值和二传手。

所以打字稿会知道[string, (newRooms: string) => void] 是一个字符串,因为您将字符串传递给rooms

此代码应与打字稿中的代码一样工作。只需将其转换并解决出现的错误即可。


但是,如果无法推断,可以给它一个提示:

useState

现在const [foo, setFoo] = useState(null as string | null) 可以是foonull,但是string是组件安装的默认值。