我正在迁移带有TypeScript的React项目以使用钩子功能(React v16.7.0-alpha),但是我不知道如何设置已分解元素的类型。
这是一个例子:
interface IUser { name: string; } ... const [user, setUser] = useState({name: 'Jon'});
我想强制user变量为type IUser。我唯一成功的试用是分两个阶段进行的:键入,然后初始化:
user
IUser
let user: IUser; let setUser: any; [user, setUser] = useState({name: 'Jon'});
但是我敢肯定有更好的方法。另外,setUser应将其初始化为以a IUser作为输入但不返回任何内容的函数。
setUser
另外,值得注意的是,const [user, setUser] = useState({name: 'Jon'});不进行任何初始化就可以正常使用,但是我想利用TypeScript强制对init进行类型检查,尤其是在依赖于某些道具的情况下。
const [user, setUser] = useState({name: 'Jon'});
谢谢你的帮助。
用这个
const [user, setUser] = useState<IUser>({name: 'Jon'});
在此处查看相应的类型:https : //github.com/DefinitelyTyped/DefinitelyTyped/blob/8a1b68be3a64e5d2aa1070f68cc935d668a976ad/types/react/index.d.ts#L844