【发布时间】:2020-09-24 13:36:44
【问题描述】:
我有一个名为 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”,并且它已经根据我的界面将我的第二个参数推断为布尔值。
我当前的实现不起作用 - 它推断出每种可能的类型,而不是正确的类型。我也不认为我应该传递类型参数,但如果需要,那么当然可以。
谢谢。
【问题讨论】:
标签: typescript type-inference typescript-generics