我有一个名为FormState的接口,用于在react中键入检查我的状态。我正在尝试创建一个函数,该函数将根据键更新状态,并使用传递的键从接口自动推断正确的类型。这是我的界面(和供参考的状态):
interface FormState {
username: string
password: string
auto_login: boolean
access_code: string
method: number
use_proxy: boolean
ignore_invalid_certificates: boolean
}
const [state, setState] = useState<FormState>({
/* state here */
})
和功能:
function updateState<T extends keyof FormState> (key: keyof FormState, value: FormState[T]): void {
setState(old => {
old[key as any] = value
return old
})
}
我希望能够调用此函数,比如说第一个参数为“ auto_login”,并且由于我的界面,它已经推断出第二个参数为布尔值。
我当前的实现无法正常工作-它会推断每种可能的类型,而不是正确的类型。我也不认为我应该通过类型参数,但是如果需要的话,那么确定。
谢谢。
没关系,我很傻。我意识到我可以使用key: T
而不是key: keyof FormState
来解决我的问题:
function updateState<T extends keyof FormState> (key: T, value: FormState[T]): void {
setState(old => {
old[key as any] = value
return old
})
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句