-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
translate Optional Chaining.ts to ko
* A file was updated in packages/playground-examples/copy/ko/3-7/Syntax and Messaging/.
- Loading branch information
Showing
1 changed file
with
70 additions
and
0 deletions.
There are no files selected for viewing
70 changes: 70 additions & 0 deletions
70
packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Optional Chaining.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
//// { compiler: { }, order: 1 } | ||
|
||
// 선택적 체이닝(Optional chaining)이 TC39 3단계에서 합의점에 도달했습니다. | ||
// 그것이 TS 3.7 내용입니다. 선택적 체이닝을 사용하면 | ||
// null 또는 undefined인 코드에 도달했을 때 | ||
// 즉시 중지할 수 있는 코드를 작성할 수 있습니다. | ||
|
||
// 프로퍼티 접근(Property Access) | ||
|
||
// 우리가 아티스트와 아티스트 약력이 없는 | ||
// 앨범을 가지고 있다고 가정해 보겠습니다. 예를 들면, | ||
// 컴필레이션 앨범에는 아티스트 정보가 없습니다. | ||
|
||
type AlbumAPIResponse = { | ||
title: string; | ||
artist?: { | ||
name: string; | ||
bio?: string; | ||
previousAlbums?: string[]; | ||
}; | ||
}; | ||
|
||
declare const album: AlbumAPIResponse; | ||
|
||
// 선택적 체이닝을 사용하면, | ||
// 다음과 같은 코드를 작성할 수 있습니다: | ||
|
||
const artistBio = album?.artist?.bio; | ||
|
||
// 대신에: | ||
|
||
const maybeArtistBio = album.artist && album.artist.bio; | ||
|
||
// 이 경우 ?.는 &&과는 다르게 동작합니다. 왜냐하면, | ||
// &&는 "falsy"값에 대한 동작이 다르기 때문입니다. | ||
// (예. 빈 문자열, 0, NaN, 그리고, false). | ||
|
||
// 선택적 체이닝은 null이거나, 연산을 멈추고 undefined를 반환하는 | ||
// 신호로 사용됩니다. | ||
|
||
// 선택적 요소 접근(Optional Element Access) | ||
|
||
// 프로퍼티 접근은 .연산자만을 이용하고, | ||
// 선택적 체이닝이 요소에 접근할 때는 []연산자와 함께 이용합니다. | ||
|
||
const maybeArtistBioElement = album?.["artist"]?.["bio"]; | ||
|
||
const maybeFirstPreviousAlbum = album?.artist?.previousAlbums?.[0]; | ||
|
||
// 선택적 호출(Optional Calls) | ||
|
||
// 런타임 시 존재 여부를 판단하는 함수를 다룰 때, | ||
// 선택적 체이닝은 실제로 존재하는 경우에만 함수호출을 지원합니다. | ||
// 이는 if (func) func()과 같은 기존에 사용하던 코드를 | ||
// 대체할 수 있습니다. | ||
|
||
// 예를 들어 API 요청에 의한 콜백 함수의 선택적 호출은 | ||
// 다음과 같습니다: | ||
|
||
const callUpdateMetadata = (metadata: any) => Promise.resolve(metadata); // Fake API call | ||
|
||
const updateAlbumMetadata = async (metadata: any, callback?: () => void) => { | ||
await callUpdateMetadata(metadata); | ||
|
||
callback?.(); | ||
}; | ||
|
||
// 선택적 체이닝에 대한 자세한 내용은 3.7 블로그 게시물을 통해 확인할 수 있습니다: | ||
// | ||
// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ |