typescript - Kortaste sättet att kalla på en möjligtvis odefinierad funktion


Kommer från en bakgrund i C# tillåter null-conditional-operatorn dig att anropa en funktion och undvika ett möjligt null-referensfel på följande sätt:

Func<int> someFunc = null;
int? someInteger = someFunc?.Invoke();
// someInteger == null

Med tanke på att Typescript har "optional chaining operator" .? med mycket liknande funktionalitet undrar jag om det finns ett sätt att göra samma sak med en lika kortfattad kodbit. Det bästa jag kan komma på är att använda ett villkorsuttryck:

let someFunc: (() => number) | undefined = undefined;
let someNumber = someFunc !== undefined ? someFunc() : undefined;

Kanske kan apply och call användas på något sätt?

Svar #1

Villkorlig anropning är möjligt i Typescript. Introducerades i 3.7 som valfri kedjning.

const a = () => {console.log('hey')}
const b = null
a?.()
b?.()

Linter kan klaga men det följer och körs, se denna lekplats

Läs mer om det i den här bloggen eller i de officiella dokumenten

Relaterade artiklar