我正在使用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,尤其是如果它依赖于一些道具。
谢谢你的帮助。
用这个
const [user, setUser] = useState<IUser>({name: 'Jon'});
请在此处查看相应的类型:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L799