node.js - Bästa alternativet för valfri kedjning i javascript


Jag har följande kedjeoperator

const age = data.student?.age ? data.student.age: '';

detta fungerar fint på min lokala maskin men verkar ha problem på en annan maskin. Vid vidare undersökning kunde jag förstå att en lägre version av Node.js (jag antar version under 12) inte stöder kedjeoperatorn. Jag förstår att jag kan ersätta detta med ett if-villkor som nedan men skulle vilja veta förslag på vad som är det bästa möjliga alternativet för detta.

function checkAge(data){
  if(data && data.student && data.student.age) {
    return data.student.age;
  } else {
   return '';
  }
}


const age  = checkAge(data);

Svar #1

Det finns inget behov av att ändra koden. Du behöver bara ändra target-alternativet i din TypeScript-konfiguration och ställa in det på vad som helst ES2019 eller lägre. Då kan du använda valfri kedjning i din TypeScript-kod och kompilatorn kommer att producera motsvarande kod.

TypeScript-koden

const foo = a?.b?.c;

blir

"use strict";
var _a;
const foo = (_a = a === null || a === void 0 ? void 0 : a.b) === null || _a === void 0 ? void 0 : _a.c;

när det är kompilerat: Länk till lekplatsen

Svar #2

Om problemet är läsbarhet, kan du förmodligen prova objektavstrukturering. Så, din tilldelning skulle se ut ungefär så här:

const {
  student: {
    age = ''
  } = {}
} = data