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

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

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

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

또는

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

무엇이 문제입니까?

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



답변

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


답변

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

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

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


답변

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


답변

선택적 체인은 Node.jsv14 로 구현되며 20/04/2020에 릴리스됩니다. 지금까지 Babel와 함께 사용할 수 있습니다 @babel/plugin-proposal-optional-chaining.


답변