使用TypeScript在useState React Hook上设置类型

问题描述 投票:11回答:1

我正在使用TypeScript项目迁移React以使用钩子功能(React v16.7.0-alpha),但我无法弄清楚如何设置析构元素的类型。

这是一个例子:

interface IUser {
  name: string;
}
...
const [user, setUser] = useState({name: 'Jon'});

我想强制user变量为IUser类型。我唯一成功的试验是分两个阶段进行:打字,然后初始化:

let user: IUser;
let setUser: any;
[user, setUser] = useState({name: 'Jon'});

但我确信有更好的方法。此外,setUser应该被初始化为一个函数,它将IUser作为输入,并且不返回任何内容。

此外,值得注意的是,使用const [user, setUser] = useState({name: 'Jon'});没有任何初始化工作正常,但我想利用TypeScript强制类型检查init,尤其是如果它依赖于一些道具。

谢谢你的帮助。

reactjs typescript react-hooks
1个回答
29
投票

用这个

const [user, setUser] = useState<IUser>({name: 'Jon'});

请在此处查看相应的类型:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L799

© www.soinside.com 2019 - 2024. All rights reserved.