typescript - Flera/sammansatta returtyper
Gör detta
function foo(): () => void | string
betyder, det
a) funktionen foo kan returnera en sträng, eller en annan funktion som inte returnerar något; eller
b) funktionen foo returnerar en annan funktion, som i sin tur kanske returnerar en sträng eller inte?
Hur anger man också korrekt och tydligt det andra alternativet (vilket som helst som är fel)?
Svar #1
function foo():() => void | string : foo är en funktion som inte har några inmatningsparametrar och den kommer att returnera en annan funktion vars resultat kommer att vara void eller string
function foo(): void | string : foo är en funktion som inte har några inparameter och den kommer att returnera void eller string
function foo(): (() => void) | string : foo är en funktion som inte har några inmatningsparametrar och den kommer att returnera en sträng eller en annan funktion som returnerar void
Svar #2
() => void | string är typen av en funktion som kan eller inte kan returnera en sträng, vilket inte verkar särskilt användbart eftersom en funktion som returnerar en sträng redan kan tilldelas () => void.
Om du ville ha "antingen en funktion eller en sträng" bör du använda parenteser: (() => void) | string, på samma sätt som du skulle använda parenteser i alla andra fall där du vill använda operatorer som inte är i ordning av prioritet.