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?