๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

 

TypeScript ์—์„œ๋Š” ๊ธฐ๋ณธํ˜• ์ž๋ฃŒํ˜•, ์ฐธ์กฐํ˜• ์ž๋ฃŒํ˜•์™ธ์—๋„ ์ถ”๊ฐ€๋กœ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค.

 

1. tuple

๊ธธ์ด์™€ ๊ฐ ์š”์†Œ์˜ ํƒ€์ž…์ด ์ •ํ•ด์ง„ ๋ฐฐ์—ด์„ ์ €์žฅํ•˜๋Š” ํƒ€์ž…

let arr:[string, number] = ["Hi",6];

arr[1].concat("!");
//Error, 'number'does not have'concat’

//์ •์˜ํ•˜์ง€์•Š์€ index ํ˜ธ์ถœ ์‹œ ์˜ค๋ฅ˜
arr[3]="hello";
//Error, Property '3'does not exist on type'[string,number]

 

2. enum

  • ํŠน์ • ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๋Š” ํƒ€์ž…
  • enumerable, ์ฆ‰ ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋งํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ์— ์ˆœ์„œ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ ์ˆœ์„œ์— ๋งž๊ฒŒ ๊ฐ’์„ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ˆœ์„œ๋Š” ์ƒ์ˆ˜๋กœ ๋งค๊ธฐ๋ฉฐ, 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๊ผด์ด๋‹ค.

 

ํŠน์ • ๊ฐ’(์ƒ์ˆ˜)๋“ค์˜ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๋Š” ํƒ€์ž…, ์—ฐ๊ด€๋œ ์•„์ดํ…œ๋“ค์„ ํ•จ๊ป˜ ๋ฌถ์–ด์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์ด๋‹ค.

enum CardinalDirection {
  North = 1,
  East,  // 2 1์”ฉ ์ถ”๊ฐ€๋œ๋‹ค.
  South, // 3
  West,
};
const UserDirection: CardinalDirection = {
  North: CardinalDirection.North,
  East: CardinalDirection.East,
  South: CardinalDirection.South,
  West: CardinalDirection.West,
};

 

3. any

๋ชจ๋“  ํƒ€์ž…์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปดํŒŒ์ผ ์ค‘ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ•˜์ง€๋งŒ any๋ฅผ ๋‚จ๋ฐœํ•˜๋ฉด Typescirpt๋ฅผ ์“ฐ๋Š” ์ด์œ ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์ œํ•œ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

let str: any = "hi";
let num: any = 10;
let arr: any = ["a", 2, true];

 

4. void

๋ณดํ†ต ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์„ ๋•Œ, any์˜ ๋ฐ˜๋Œ€ ํƒ€์ž…

// ๋ณ€์ˆ˜์—๋Š” undefined์™€ null๋งŒ ํ• ๋‹นํ•˜๊ณ , ํ•จ์ˆ˜์—๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์—†๋Š” ํƒ€์ž…

let unknown: void = undefined;

function sayHi(): void {
	console.log("hi");
}

 

5. never

๋ฐœ์ƒํ•  ์ˆ˜ ์—†๋Š” ํƒ€์ž…

// ํ•ญ์ƒ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ์ ˆ๋Œ€ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ๋ฐ˜ํ™˜ ํƒ€์ž…
// ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜
function neverEnd(): never {
while (true) {}
}
// Error: A function returning 'never' cannot
have a reachable end point.ts(2534)
function neverEnd(): never {
while (true) {
break;
}
}

// ํ•ญ์ƒ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ•จ์ˆ˜
function error(message: string): never {
throw Error(message)
}
๋ฐ˜์‘ํ˜•