reactjs - Hur kan jag få returtypen för generiska funktioner?
Jag försökte skapa ett context som lagrar returvärdet av useState i Typescript som nedan:
const SomethingContext = React.createContext<ReturnType<typeof useState<Something>> | undefined>(undefined);Men det orsakar ett syntaxfel på grund av <Something>-typspecifikation.
Om jag använder ReturnType utan typespecifikation, blir SomethingContext React.Context<[unknown, React.Dispatch<unknown>] | undefined>, vilket jag inte förväntade mig på grund av unknown.
Vad gjorde jag fel?
Och mer i allmänhet, hur kan jag få returtypen för generiska funktioner med specifik typ?
Förväntat beteende
En typ GenericReturnType som uppfyller:
GenericReturnType<Something, useState> ger [Something, React.Dispatch<Something>]
Relaterad fråga
Typescript ReturnType av generisk funktion
Svar #1
För det första är useState inte en typ alls, det kan inte passeras på ett generiskt sätt, därför är det inte realistiskt att GenericReturnType<Something, useState> blir till [Something | undefined, React.Dispatch<Something>]
För det andra är typen av useState<T>() lika med [T, React.Dispatch<React.SetStateAction<T>>], jag undrar varför du inte använder React.Dispatch<React.SetStateAction<T> direkt istället?