craftingIT

bridgingIT - Blog

Endlich: Optional Chaining in TypeScript

- Tobias Meier - Microsoft Individualentwicklung
Themen: TypeScript, Individualentwicklung
Blog Bild

In C# gibt es bereits seit der Version 6.0 den "Null Propagation Operator". Er ermöglicht die Verkettung von Methoden- und Propertyaufrufen, ohne bei jedem Rückgabewert explizit einen Null-Wert ausschließen zu müssen, um eine NullPointerException zu vermeiden.

Beispiel:

public string GetName(Project project)
{     
   return project?.Owner?.EMail;
}

Für den Fall, dass project oder Owner null ist, gibt die Funktion automatisch den Default-Wert, in diesem Fall null, zurück.

Seit vielen Jahren steht dieses Feature auch auf der Wunschliste für EcmaScript.

Mit dem aktuellen Release von TypeScript 3.7, welches diese Woche veröffentlich wurde, kann "Optional Chaining" auch endlich in TypeScript verwendet werden:

interface OwnerPerson
{
    id?: number | undefined;
   name?: string | undefined;  
   email?: string | undefined;  
}

interface Project {
   id?: number | undefined;
   name?: string | undefined;  
   person: OwnerPerson;
}

function GetName(project: Project)
{
    return project?.person?.email;
}

Allerdings führt der ?-Operator hier nicht zu einem Rückgabewert von null, sondern zu einem undefined. Die vollständige Methodensignatur lautet somit:

function GetName(project: Project) : string | undefined
{
  return project?.person?.email; 
}

Weiterhin neu in TypeScript 3.7 sind ist der "Null-Zusammenführungsoperator" und "Assertion Functions", auf welche ich in den nächsten Blogpposts eingehen werden. Bis dahin "Happy Chaining mit ?".