如果我有这个代码:
import { useState } from "preact/hooks";
export default function Test() {
const [state, setState] = useState(null);
setState('string');
}
然后我得到了这个错误:
Argument of type 'string' is not assignable to parameter of type '(prevState: null) => null'.deno-ts(2345)
我知道它希望我使用与初始类型相同的值类型.但是,如果初始值是实际的类似文字的数字:
- const [state, setState] = useState(null);
+ const [state, setState] = useState(1);
那么错误是:
Argument of type 'string' is not assignable to parameter of type 'number | ((prevState: number) => number)'.deno-ts(2345)
阅读What is prevState in ReactJS?或Hooks – Preact Guide并不能帮助我理解:
-
((prevState: null) => null) | null
是什么意思 - 为什么第一个 case 所需的类型不是
null | ((prevState: null) => null)
? - 如何使用多种类型?例如,初始值是1或null,但我随后将值设置为
'string'
?