我正在使用带有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('');
}
会是这样吗?
答案 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)
可以是foo
或null
,但是string
是组件安装的默认值。