Skip to content

Commit 35d2a24

Browse files
committed
translate Optional Chaining.ts to ko
* A file was updated in packages/playground-examples/copy/ko/3-7/Syntax and Messaging/.
1 parent 9aa5bff commit 35d2a24

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
//// { compiler: { }, order: 1 }
2+
3+
// 선택적 체이닝(Optional chaining)이 TC39 3단계에서 합의점에 도달했습니다.
4+
// 그것이 TS 3.7 내용입니다. 선택적 체이닝을 사용하면
5+
// null 또는 undefined인 코드에 도달했을 때
6+
// 즉시 중지할 수 있는 코드를 작성할 수 있습니다.
7+
8+
// 프로퍼티 접근(Property Access)
9+
10+
// 우리가 아티스트와 아티스트 약력이 없는
11+
// 앨범을 가지고 있다고 가정해 보겠습니다. 예를 들면,
12+
// 컴필레이션 앨범에는 아티스트 정보가 없습니다.
13+
14+
type AlbumAPIResponse = {
15+
title: string;
16+
artist?: {
17+
name: string;
18+
bio?: string;
19+
previousAlbums?: string[];
20+
};
21+
};
22+
23+
declare const album: AlbumAPIResponse;
24+
25+
// 선택적 체이닝을 사용하면,
26+
// 다음과 같은 코드를 작성할 수 있습니다:
27+
28+
const artistBio = album?.artist?.bio;
29+
30+
// 대신에:
31+
32+
const maybeArtistBio = album.artist && album.artist.bio;
33+
34+
// 이 경우 ?.는 &&과는 다르게 동작합니다. 왜냐하면,
35+
// &&는 "falsy"값에 대한 동작이 다르기 때문입니다.
36+
// (예. 빈 문자열, 0, NaN, 그리고, false).
37+
38+
// 선택적 체이닝은 null이거나, 연산을 멈추고 undefined를 반환하는
39+
// 신호로 사용됩니다.
40+
41+
// 선택적 요소 접근(Optional Element Access)
42+
43+
// 프로퍼티 접근은 .연산자만을 이용하고,
44+
// 선택적 체이닝이 요소에 접근할 때는 []연산자와 함께 이용합니다.
45+
46+
const maybeArtistBioElement = album?.["artist"]?.["bio"];
47+
48+
const maybeFirstPreviousAlbum = album?.artist?.previousAlbums?.[0];
49+
50+
// 선택적 호출(Optional Calls)
51+
52+
// 런타임 시 존재 여부를 판단하는 함수를 다룰 때,
53+
// 선택적 체이닝은 실제로 존재하는 경우에만 함수호출을 지원합니다.
54+
// 이는 if (func) func()과 같은 기존에 사용하던 코드를
55+
// 대체할 수 있습니다.
56+
57+
// 예를 들어 API 요청에 의한 콜백 함수의 선택적 호출은
58+
// 다음과 같습니다:
59+
60+
const callUpdateMetadata = (metadata: any) => Promise.resolve(metadata); // Fake API call
61+
62+
const updateAlbumMetadata = async (metadata: any, callback?: () => void) => {
63+
await callUpdateMetadata(metadata);
64+
65+
callback?.();
66+
};
67+
68+
// 선택적 체이닝에 대한 자세한 내용은 3.7 블로그 게시물을 통해 확인할 수 있습니다:
69+
//
70+
// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/

0 commit comments

Comments
 (0)