-
Notifications
You must be signed in to change notification settings - Fork 132
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #49 from yahma25/Translation-to-ko-playground-Tuples
Translate 1 file to ko - Tuples
- Loading branch information
Showing
1 changed file
with
74 additions
and
0 deletions.
There are no files selected for viewing
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,74 @@ | ||
// 일반적으로 배열은 0부터 여러 개의 | ||
// 단일 타입 객체를 포함할 수 있습니다. | ||
// TypeScript는 다양한 타입을 포함하고, | ||
// 색인 되는 순서가 중요한 배열을 특별하게 분석할 수 있습니다. | ||
|
||
// 이를 튜플이라고 부릅니다. 튜플을 일부 데이터에 연결하기 위한 | ||
// 방법으로 생각할 수 있지만, 키로 구성되는 객체보다 구문을 덜 가집니다. | ||
|
||
// JavaScript의 배열 구문을 사용하여 튜플을 생성할 수 있습니다: | ||
|
||
const failingResponse = ["Not Found", 404]; | ||
|
||
// 또한 튜플에 타입 선언이 필요할 수 있습니다. | ||
|
||
const passingResponse: [string, number] = ["{}", 200]; | ||
|
||
// 두 변수 이름에 호버해보면 | ||
// 배열 ( (string | number)[] )과 튜플 ( [string, number] )의 | ||
// 차이점을 볼 수 있습니다. | ||
|
||
// 배열의 순서가 중요하지 않을 때, | ||
// 모든 인덱스에 있는 요소는 문자열 또는 숫자가 될 수 있습니다. | ||
// 하지만 튜플에서는 순서와 길이가 보장됩니다. | ||
|
||
if (passingResponse[1] === 200) { | ||
const localInfo = JSON.parse(passingResponse[0]); | ||
console.log(localInfo); | ||
} | ||
|
||
// 이는 TypeScript가 올바른 인덱스에 올바른 타입을 제공하고, | ||
// 선언되지 않은 인덱스에 있는 객체에 접근하면 | ||
// 에러가 발생한다는 것을 의미합니다. | ||
|
||
passingResponse[2]; | ||
|
||
// 튜플은 적은 양의 연결된 데이터 | ||
// 또는 고정된 데이터 타입을 위한 좋은 패턴처럼 느껴질 수 있습니다. | ||
|
||
type StaffAccount = [number, string, string, string?]; | ||
|
||
const staff: StaffAccount[] = [ | ||
[0, "Adankwo", "adankwo.e@"], | ||
[1, "Kanokwan", "kanokwan.s@"], | ||
[2, "Aneurin", "aneurin.s@", "Supervisor"], | ||
]; | ||
|
||
// 튜플에서 시작 타입은 알지만, | ||
// 길이에 대해 알 수 없을 때 | ||
// 전개 연산자를 사용해 길이에 상관없이 | ||
// 나머지를 특정한 타입으로 나타낼 수 있습니다: | ||
|
||
type PayStubs = [StaffAccount, ...number[]]; | ||
|
||
const payStubs: PayStubs[] = [ | ||
[staff[0], 250], | ||
[staff[1], 250, 260], | ||
[staff[0], 300, 300, 300], | ||
]; | ||
|
||
const monthOnePayments = payStubs[0][1] + payStubs[1][1] + payStubs[2][1]; | ||
const monthTwoPayments = payStubs[1][2] + payStubs[2][2]; | ||
const monthThreePayments = payStubs[2][2]; | ||
|
||
// 튜플을 사용하면 개수를 알 수 없는 | ||
// 매개변수 타입을 선언할 수 있습니다: | ||
|
||
declare function calculatePayForEmployee(id: number, ...args: [...number[]]): number; | ||
|
||
calculatePayForEmployee(staff[0][0], payStubs[0][1]); | ||
calculatePayForEmployee(staff[1][0], payStubs[1][1], payStubs[1][2]); | ||
|
||
// | ||
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#tuples-in-rest-parameters-and-spread-expressions | ||
// https://auth0.com/blog/typescript-3-exploring-tuples-the-unknown-type/ |