[TS] Type

๋‹ˆ๋‚˜๋…ธ๊ฐœ๋ฐœ์ƒํ™œยท2021๋…„ 9์›” 28์ผ
0

๐Ÿ’กah-ha

๋ชฉ๋ก ๋ณด๊ธฐ
35/51
post-thumbnail

๋ฐ์ดํ„ฐ ํƒ€์ž…

  • JS ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ํฌํ•จ(superset)
  • Boolean, Number, String, Null, Undefined, Symbol
  • Array : objectํ˜•
  • Any, Void, Never, Unknown
  • Enum
  • Tuple: objectํ˜•

Primitive Type

  • ์˜ค๋ธŒ์ ํŠธ์™€ ๋ ˆํผ๋Ÿฐ์Šค ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒํ˜•
  • ES2015 ๊ธฐ์ค€ 6๊ฐ€์ง€

boolean

number

string

null/undefined

  • ๊ฐ๊ฐ undefined, null์ด๋ผ๋Š” ํƒ€์ž…์„ ๊ฐ€์ง„๋‹ค
  • ๋‘˜ ๋‹ค ์†Œ๋ฌธ์ž๋งŒ ์กด์žฌํ•œ๋‹ค.
  • void์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ทธ ์ž์ฒด๋กœ๋Š” ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค.

null

  • null์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ ํ• ๋‹น๋œ ๊ฒƒ
  • ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žˆ๋Š”๋ฐ, ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋œ ๋œ ์ƒํƒœ
    ** ๋Ÿฐํƒ€์ž„์—์„œ typeof ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์•Œ์•„๋‚ด๋ฉด object

undefined

  • ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜
  • ์„ ์–ธ๋งŒํ•˜๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ์ƒํƒœ
  • object์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†์„ ๋•Œ๋„ undefined
    ** ๋Ÿฐํƒ€์ž„์—์„œ typeof ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์•Œ์•„๋‚ด๋ฉด undefined

symbol

object

  • 'primitive type์ด ์•„๋‹Œ ๊ฒƒ'์„ ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
declare function create(o: object | null): void;

Array

// ํ‘œํ˜„ 1
let list: number[] = [1,2,3];
let list_: (number | string)[] = [1,2,3,'4'];

// ํ‘œํ˜„ 2
let List: Array<number> = [1,2,3];

Tuple

  • array์™€ ๋‹ฌ๋ฆฌ ํ•ญ์ƒ ์ˆœ์„œ์™€ ํƒ€์ž…, ๊ธธ์ด๊ฐ€ ์ผ์น˜ํ•ด์•ผํ•œ๋‹ค.
let x: [string, number];
x = ['hello', 20];

Any

  • ์–ด๋–ค ํƒ€์ž…์ด์–ด๋„ ์ƒ๊ด€์—†๋Š” ํƒ€์ž…
  • ํ•˜์ง€๋งŒ ์ตœ๋Œ€ํ•œ ์“ฐ์ง€ ์•Š๋Š”๊ฒŒ ํ•ต์‹ฌ
    -> ์ปดํŒŒ์ผ ํƒ€์ž…์— ํƒ€์ž… ์ฒดํฌ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
    -> ๋ˆ„์ˆ˜ ๋ฐœ์ƒ
  • ํƒ€์ž… ์•ˆ์ •์„ฑ์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋™๊ธฐ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” any๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผํ•œ๋‹ค.
  • ๊ฐœ์ฒด๋ฅผ ํ†ตํ•ด ๊ณ„์† ์ „ํŒŒ๋œ๋‹ค.
let looselyTyped:any = {};

const d = looselyTyped.a.b.c.d;

Unknown

  • any๊ฐ€ ๊ฐ€์ง„ ํƒ€์ž… ๋ถˆ์•ˆ์ •์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€์ฒด์ž
  • any์™€ ๊ฐ™์ด ์•„๋ฌด๊ฑฐ๋‚˜ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž…์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํƒ€์ž…์˜ ์œ ํ˜•์„ ์ขํžˆ๊ฑฐ๋‚˜
  • ํƒ€์ž…์„ ํ™•์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ๊ณณ์— ํ• ๋‹น ํ•  ์ˆ˜ ์—†๊ณ , ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋ฏธ๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์ด ๋ณ€์ˆ˜๊ฐ€ ๋ฌด์—‡์ด๋“  ๋  ์ˆ˜ ์žˆ์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ํƒ€์ž…

Never

function err(msg:string): never {
  throw new Error(msg);
}

function fail() {
  return err('failed');
}

function infiniteLoop(): never {
  while(true) {}
}
  • ๋ชจ๋“  ํƒ€์ž…์˜ ์„œ๋ธŒํƒ€์ž…์ด๋ฉฐ ๋ชจ๋“  ํƒ€์ž…์— ํ• ๋‹น ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜์ง€๋งŒ, ๊ทธ ์–ด๋–ค ํƒ€์ž…(any ์กฐ์ฐจ๋„) ํ• ๋‹น ํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ž˜๋ชป๋œ ํƒ€์ž…์„ ๋„ฃ๋Š” ์‹ค์ˆ˜๋ฅผ ๋ง‰๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
let A:string = 'hello';
if (typeof A !== 'string') {
  // A๋Š” ๋ฌธ์ž์ธ๋ฐ ์กฐ๊ฑด์ด ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ(์ด๋Ÿฐ ๊ฒฝ์šฐ ์—†์Œ..)์—๋Š” never
  A;
}

Void

  • ์–ด๋–ค ํƒ€์ž…๋„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๋นˆ ์ƒํƒœ
  • ๋ฆฌํ„ด ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ
// void : return์œผ๋กœ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
// void return์œผ๋กœ ์œ ์ผํ•˜๊ฒŒ undefined๋งŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

function returnVoid(msg:string): void {
  console.log(msg);

  return;
}

const r = returnVoid('๋ฆฌํ„ด์ด ์—†๋‹ค.') // type : void
profile
๊นƒํ—™์œผ๋กœ ์ด์‚ฌ์ค‘..

0๊ฐœ์˜ ๋Œ“๊ธ€