Hur man konverterar en nullable typ till en icke-nullable typ (i TypeScript)?
Jag skulle vilja konvertera en nullable-typ till en icke-nullable-typ.
Till exempel, om jag har en typ som:
const type A = {b: "xyz"} | null
då skulle jag vilja extrahera:
{b:"xyz"}
genom att göra så här:
A!
men det fungerar inte (givetvis är !-operatorn för nullable "variabler", inte nullable "typer").
Kan någon hjälpa mig att lösa det här problemet? Tack!
Svar #1
Om du har en typ:
type A = {b: "xyz"} | null
Att använda NonNullable tar bort både null och undefined från din unionstyp:
type NonNullableA = NonNullable<A>
Om du bara vill ta bort null men fortfarande behålla undefined kan du använda Exclude:
type NullExcludedA = Exclude<A, null>
I detta fall kommer både NonNullableA och NullExcludedA att ge den typ du söker:
{b:"xyz"}
Svar #2
Mitt problem var att ett Promise typat så här:
myPromise: (args?: any) => Promise<X> ...
tolkas av TypeScript som en Promise<void | X> av någon anledning.
Var tvungen att kasta typen korrekt med denna funktion
const notUndefined = <T> (a: T | void/*undefined / null*/) => a as T;
from(myPromise).pipe(map(notUndefined)) (Observable<X>)
