Итак, у меня есть этот пользовательский хук для декодирования токена
export function useToken(initial: string) {
const [token, setToken] = useState<string>(initial)
const [decoded, setDecoded] = useState<Token>()
useEffect(() => {
if (token) {
const value = decodeToken(token)
if (isTokenExpired(value)) {
setDecoded(undefined)
} else {
setDecoded(value)
}
} else {
setDecoded(undefined)
}
}, [token])
return [decoded, setToken]
}
Тип возврата выглядит хорошо, здесь
[Token, React.Dispatch<React.SetStateAction<string>>]
У меня есть другой хук, который использует этот хук, но он неправильно видит тип возврата
export function useUser() {
const [decoded, setToken] = useToken(getTokenFromStorage())
//...
Здесь useToken дает и декодированный, и setToken один и тот же тип
Token | React.Dispatch<React.SetStateAction<string>>
т.е.
decoded: Token | React.Dispatch<React.SetStateAction<string>>, setToken: Token | React.Dispatch<React.SetStateAction<string>>
Что я делаю не так ...