sourcecode

객체 속성 액세스를 위한 선택적 체인 연산자 사용

codebag 2023. 4. 3. 21:28
반응형

객체 속성 액세스를 위한 선택적 체인 연산자 사용

TypeScript 3.7은 이제 옵션 체인 연산자를 지원합니다.따라서 다음과 같은 코드를 쓸 수 있습니다.

const value = a?.b?.c;

즉, 이 연산자를 사용하여 객체 자체의 속성에 액세스할 수 있습니다.null또는undefined. 기본적으로 동일한 작업을 수행하려고 합니다. 그러나 속성 이름은 동적입니다.

const value = a?[b]?.c;

다만, 구문 에러가 표시됩니다.

오류 TS1005: ':'이(가) 예상되었습니다.

내가 여기서 뭘 잘못하고 있는 거지?이게 가능하기나 해?

제안은 이것이 불가능하다는 것을 암시하는 것 같습니다(그러나 구문 예제를 잘못 알고 있는 것 같습니다).

대괄호 표기법 및 옵션 체인을 사용하여 속성에 액세스하는 경우 대괄호 외에 점을 사용해야 합니다.

const value = a?.[b]?.c;

이것은 TC39 제안에서 채택된 구문입니다. 그렇지 않으면 파서가 이 구문 여부를 파악하기 어렵기 때문입니다.?는 삼원식의 일부 또는 옵션 체인의 일부입니다.

내가 생각하는 방법: 옵션 체인의 기호는?,그건…?.. 옵션 체인을 할 경우 항상 두 문자를 모두 사용합니다.

옵션 체인 연산자는 다음과 같습니다.?.

다음은 null 가능한 속성 및 함수 처리의 몇 가지 예입니다.

const example = {a: ["first", {b:3}, false]}

// Properties
example?.a  // ["first", {b:3}, false]
example?.b  // undefined

// Dynamic properties ?.[]
example?.a?.[0]     // "first"
example?.a?.[1]?.a  // undefined
example?.a?.[1]?.b  // 3

// Functions ?.()
null?.()                // undefined
validFunction?.()       // result
(() => {return 1})?.()  // 1

보너스: 기본값

??정의되지 않은 경우 또는 null인 경우 (Nullish Marescing)을 사용하여 기본값을 설정할 수 있습니다.

const notNull = possiblyNull ?? defaultValue
const alsoNotNull = a?.b?.c ?? possiblyNullFallback ?? defaultValue

언급URL : https://stackoverflow.com/questions/58780817/using-optional-chaining-operator-for-object-property-access

반응형