Node.js 12에서 선택적 체인을 사용하는 방법


17

선택적 체인 ( obj?.param1?.param2)은 훌륭한 기능 인 것처럼 보였으며 실제로 구현 된 것을보고 싶었고 마침내 중첩 된 if, 임의의 함수 및 그러한 간단한 작업에 대한 것이 아닌 것을 제거하고 싶었습니다.

그러나 문제가 있는데 작동하지 않습니다. 노드 12로 업데이트했는데 여전히 오류가 발생합니다.

var dude = res?.param?.params[0]
SyntaxError: Unexpected token '.'

또는

var dude = res.param?.params[0]
SyntaxError: Unexpected token '.'

무엇이 문제입니까?

이 기능을 사용하려면 언어 구성을 변경하거나 라이브러리를 다운로드해야합니까? 아니면 아직 끝나지 않았습니까?


2
Stage 4있습니다. Node.js는 아직 이것을 지원하지 않습니다. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Sridhar

'nodejs null propagation'을 검색했으며 처음에는이 질문을 찾을 수 없었습니다. 이 의견이 검색 가능성을 향상시키기를 바랍니다.
Casimir

나는 그것에 대해 많은 것을 할 수 없습니다 두려워. 태그가 있지만 Javascript와 관련이 없으며 좋은 것보다 더 혼란을 줄 것입니다.
almarc

답변:


17

선택적 체인은 현재 Node.js버전 13 이하 에서 지원되지 않으며 Node.js버전 14 이하에서는 대부분의 브라우저에서 지원됩니다 Stage 4. 현재 지원하는 플랫폼은 거의 없습니다 . 주어진 링크 에서 선택적 체인을 지원하는 플랫폼 목록을 찾을 수 있습니다 . --harmony플래그를 사용하여 옵션을 활성화 할 수 있습니다 .


10

선택적 체인 기능의 사양은 2019 년 12 월 22 일4 단계 (완료)로 승격되었습니다 . 사양이 완성되기 전에 노드 12가 나왔습니다. 그 문제에 대해서도 노드 13도 마찬가지였습니다.

node.green 에 따르면 선택적 연결은 노드 14부터 지원되지만 여전히 --harmony플래그 가 필요합니다 . (이것은 --harmony플래그에 대한 Node의 설명과 충돌하는 것 같습니다. V8의 배송 기능에는 플래그가 필요하지 않습니다. 따라서 무엇을 만들어야할지 모르겠습니다.) 여전히 플래그가 필요한지 여부는 모르겠습니다. 2020 년 4 월경 노드 14가 출시 될 때까지이 기능을 볼 수있을 것으로 기대하지 않습니다 .

오늘 옵션 체인을 사용하려면 TypeScript ( 버전 3.7에 옵션 체인추가 한 ) 또는 Babel 과 같은 전처리기를 사용하는 것이 가장 좋습니다 .


10

nodejs v13.7.0을 --harmony 플래그와 함께 사용할 수있었습니다.

노드 --harmony myCode.js

디나

찾으시는 주소가 없습니다

찾으시는 주소가 없습니다

//myCode.js

const adventurer = {
  name: 'Alice',
  cat: {
    name: 'Dinah'
  }
};

const catName = adventurer.cat?.name;
console.log(catName);
// expected output: Dinah
const dogName = adventurer.dog?.name;
console.log(catName);
//expected output: undefined

console.log(adventurer.someNonExistentMethod?.())
//expected output: undefined

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.