Skip to content

?. operator for safe member access #1303

Closed
@kevinbarabash

Description

@kevinbarabash

One of the new features in C# 6 is the new ?. operator which lets you avoid writing lots of boilerplate code when accessing nested properties. It would be nice if there was something similar in TypeScript. http://blogs.msdn.com/b/jerrynixon/archive/2014/02/26/at-last-c-is-getting-sometimes-called-the-safe-navigation-operator.aspx

Problem:

var g1 = null; 
var item = this.parent; 
if (item !== null && item !== undefined) { 
    item = item.child; 
    if (item !== null && item !== undefined) { 
        item = item.child; 
        if (item !== null && item !== undefined) { 
            g1 = item.child; 
        } 
    } 
} 
if (g1 !== null) {
    // do stuff
}

Proposed solution:

var g1 = this.parent?.child?.child?.child;
if (g1 !== null) {
   // do stuff
}

This should also work with the results of method calls and array indexing:

var hrefLength = nodeList.item(0)?.getAttribute("href")?.length;
userList[0]?.firstName = "player 1";

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already created

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions