2017-02-01 1 views
0

3 진 조건부 연산자를 사용할 때 고려할 값에 액세스 할 수 있는지 궁금합니다.3 진 조건부 연산자로 평가되는 값에 액세스 할 수 있습니까?

예컨대 :

const dict = new Map<Foo, Bar>(); 

const x = dict.get("foo") !== undefined ? dict.get("foo") : new Bar(); 

이 삼항 표현의 반복 dict.get("foo") 제거하는 방법은 없나요?

+0

:

let x = dict.get("foo"); if (x === undefined) { x = new Bar(); } 

그러나, truthy 비교 대신 undefined에 대한 구체적 시험 할 것입니다 경우, 이것은 일반적인 관용구이다 당신은 구체적으로'! == undefined'와 결혼 했습니까? 그렇다면 아니오 : 그것에 대한 우아한 속기가 없습니다. 그렇지 않으면, 단순히 * truthy * 테스트도 그렇게한다면, 공통된 관용구가 있습니다 ... – deceze

답변

2

아니요, ?: 연산자는 표현을 평가합니다. 부울 식인 dict.get("foo") !== undefined이라는 식을 지정합니다. ?: 운영자가 나중에 해당 표현 내에서 dict.get("foo")만을 분리 할 방법이 없습니다.

특정 !== undefined 테스트가 필요하면 아니오, 다른 방법은 없습니다. 반복 방법을 피하기 위해에만 해당 리팩토링 수있는 전화 :

const x = dict.get("foo") || new Bar(); 
관련 문제