선택적 체인 ( 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.js
v14 로 구현되며 20/04/2020에 릴리스됩니다. 지금까지 Babel
와 함께 사용할 수 있습니다 @babel/plugin-proposal-optional-chaining
.