我想实现以下功能
const foo = <S>(newState: S | ((prevState: S) => S)) => {...}
因此它要么采用S
类型的新状态,要么采用从旧状态产生新状态的函数。
在实施中如何区分这些选项?我假设typeof newState === 'function'
不能正常工作,因为S
也可以是一个函数。
我使用的是打字稿,但解决方案可能与JS而不是TS有关。
答案 0 :(得分:0)
如前所述,您可以使用typeof
解决问题,例如:
if(typeof newState === 'function') {
newState();
} else {
// do whatever you want
}