Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translation 2 file to Ko #1449

Merged
merged 11 commits into from
Jan 30, 2021
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// # Nullish Coalescing
//
// `??`는 `||`의 일반적인 사용 방법을 보완하는 새로운 연산자입니다.
// 같은 방식으로 `===`가 `==`의 사용을 더 엄격한 등호 형태로
yahma25 marked this conversation as resolved.
Show resolved Hide resolved
yahma25 marked this conversation as resolved.
Show resolved Hide resolved
// 보완시킵니다.
yahma25 marked this conversation as resolved.
Show resolved Hide resolved
//
// 방식을 이해하기 위해 어떻게 ||가 동작하는지 봅시다:
yahma25 marked this conversation as resolved.
Show resolved Hide resolved

const response = {
nullValue: null,
headerText: "",
animationDuration: 0,
height: 400,
showSplashScreen: false,
} as const;

const undefinedValue = response.undefinedValue || "some other default";
// 결과는 이렇게 될 겁니다: 'some other default'
yahma25 marked this conversation as resolved.
Show resolved Hide resolved

const nullValue = response.nullValue || "some other default";

// 2개의 예시는 대부분 언어에서 비슷하게 동작합니다.
// 하나의 도구로써 || 연산자는 기본값을 설정할 때 매우 적합하지만,
// JavaScript falsy 체크는 몇 가지 일반적인 값으로 여러분을 놀래게 할 수 있습니다:
yahma25 marked this conversation as resolved.
Show resolved Hide resolved

// 의도된 것이 아닐 수 있습니다. ''은 falsy고, 결과는 다음과 같습니다: 'Hello, world!'
yahma25 marked this conversation as resolved.
Show resolved Hide resolved
const headerText = response.headerText || "Hello, world!";

// 의도된 것이 아닐 수 있습니다. 0은 falsy고, 결과는 다음과 같습니다: 300
yahma25 marked this conversation as resolved.
Show resolved Hide resolved
const animationDuration = response.animationDuration || 300;

// 의도된 것이 아닐 수 있습니다. false는 falsy고, 결과는 다음과 같습니다: true
yahma25 marked this conversation as resolved.
Show resolved Hide resolved
const showSplashScreen = response.showSplashScreen || true;

// 대신 ??으로 전환하여 사용한다면,
// === 등호는 양쪽을 비교하기 위해 사용됩니다:

const emptyHeaderText = response.headerText ?? "Hello, world!";
const zeroAnimationDuration = response.animationDuration ?? 300;
const skipSplashScreen = response.showSplashScreen ?? true;
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
//// { compiler: { ts: "4.0.2" } }
// 튜플은 타입 시스템에서 순서가 중요한 배열입니다,
// 여러분은 예시에서 자세히 배울 수 있습니다: 튜플

// TypeScript 4.0에서, 튜플의 얻게 된 기능의 타입은
// 배열의 각각 다른 부분에 이름을 부여할 수 있습니다.

// 예를 들어, 여러분은 Lat, Long 위치를 튜플을 통해 작성하곤 했습니다:

type OldLocation = [number, number]

const locations: OldLocation[] = [
[40.7144, -74.006],
[53.6458, -1.785]
]

// 어떤 것이 Latitude이고 Longitude인지 아는 것은 모호하므로,
// 여러분은 LatLong 튜플이라고 불러왔을 겁니다.

// 4.0에서는, 이렇게 작성할 수 있습니다.

type NewLocation = [lat: number, long: number]

const newLocations: NewLocation[] = [
[52.3702, 4.8952],
[53.3498, -6.2603]
]

// 그 이름은 이제 에디터에서
// 여러분이 다음 줄의 끝에 있는 0과 1 위에서 호버할 때 보입니다.
const firstLat = newLocations[0][0]
const firstLong = newLocations[0][1]

// 조금 실망스럽게 보일 수 있지만,
// 주요 목표는 타입 시스템이 동작할 때,
// 정보를 잃어버리지 않도록 하는 것입니다.
// 예를 들어, Parameter 유틸리티 타입을 사용하는 함수에서
// 파라미터를 추출할 경우:

function centerMap(lng: number, lat: number) {}

// 4.0에서, lng와 lat는 유지합니다
type CenterMapParams = Parameters<typeof centerMap>

// 3.9에서는, 이렇게 보입니다
type OldCenterMapParams = [number, number]

// 파라미터 정보에 대해
// 더 복잡한 타입 조작 손실을 만듭니다.