πŸ“Œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λŠ” 이유

  • 컴파일 λ‹¨κ³„μ—μ„œ μ—λŸ¬λ₯Ό 확인 ν•  수 μžˆλ‹€.
    • ❗️동적인 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ •μ μœΌλ‘œ μ‚¬μš© ν•  수 μžˆλ‹€.
    • ❗️디버깅이 μ‰¬μ›Œμ§
  • IDE μžλ™μ™„μ„± κΈ°λŠ₯
    • β—οΈμž‘μ—…μ‹œκ°„μ„ 단좕 μ‹œν‚¬ 수 μžˆλ‹€.

​


πŸ“Œ νƒ€μž… μ •μ˜ν•˜κΈ°

Const test = {
  id:0,
  name: β€œMerry”,
  kind: β€œdog”
}

이런 λ³€μˆ˜κ°€ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. πŸ€”
이 λ³€μˆ˜λŠ” id μ˜μ—­μ— string이 λ“€μ–΄κ°ˆ μˆ˜λ„ 있고 numberκ°€ λ“€μ–΄κ°ˆ μˆ˜λ„ μžˆλ‹€.
id 에 number 만 λ“€μ–΄κ°ˆ 수 있게 μ„€μ •ν•΄μ£Όκ³  μ‹Άλ‹€λ©΄ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•΄ νƒ€μž…μ„ μ •μ˜ν•΄μ£Όλ©΄ λœλ‹€ πŸ˜„

객체의 ν˜•νƒœλ₯Ό λͺ…μ‹œμ μœΌλ‘œ λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄μ„œ interfaceλ₯Ό μ‚¬μš©ν•œλ‹€.
Interface λŒ€μ‹  classλ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€. ν•˜μ§€λ§Œ interfaceλ₯Ό ν™œμš©ν•˜λ„λ‘ ν•˜μžβ€ΌοΈ

Interface Test {
  id: number;
  name: string;
  kind: string;
}

interface둜 객체의 ν˜•νƒœλ₯Ό μ§€μ •ν•΄μ£Όμ—ˆλ‹€.

Class TestClass {
  id: number;
  name: string;
  kind: string;

  constructor(id: number, name: string, kind: string){
    this.id = id;
    this.name = name;
    this.kind = kind;
  }

}

class둜 μ„ μ–Έν•  κ²½μš°μ—” μ΄λ ‡κ²Œ ν™œμš©ν•  수 μžˆλ‹€.
λ³€μˆ˜ μ„ μ–Έ 뒀에 interface둜 μ„ μ–Έν•œ νƒ€μž…λͺ…을 적어주면 λœλ‹€.

Const test: Test = {
  id:0,
  name: β€œMerry”,
  kind: β€œdog”
}

νƒ€μž…κ΅¬μ„±

  • μœ λ‹ˆμ˜¨ (Unions) μœ λ‹ˆμ˜¨μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ or μ—°μ‚°μž (||) 와 같이 β€˜Aμ΄κ±°λ‚˜ B이닀’ λž€ μ˜λ―Έμ΄λ‹€.
    νƒ€μž…μ„ μ—¬λŸ¬κ°œ 지정해놓고 κ·Έ 쀑 ν•˜λ‚˜μΌ 수 μžˆμŒμ„ μ„ μ–Έν•œλ‹€.
type Kind = β€œdog” | β€œcat” | β€œetc”;

​

TIP🌟
Typeof 둜 λ³€μˆ˜μ˜ νƒ€μž…μ„ 검사할 수 μžˆλ‹€.
검사 ν•  수 μžˆλŠ” νƒ€μž…μ€ μ•„λž˜μ™€ κ°™λ‹€.

String, boolean, undefined, number, function

​


  • μ œλ„€λ¦­ (Generics)
    μ œλ„€λ¦­μ€ μ—¬λŸ¬ 데이터 νƒ€μž…μ— λŒ€ν•΄ λ™μΌν•˜κ²Œ λ™μž‘ν•  수 있게 ν•΄μ£ΌλŠ” κΈ°λŠ₯이닀.
    주둜 μ—¬λŸ¬ κ°€μ§€ νƒ€μž…μ—μ„œ λ™μž‘ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό μƒμ„±ν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€.
Function Test( text ){
  return text;
}

Test(’string’);
Test(5);
Test(true);

μ–΄λ–€ 값을 λ„˜κ²¨μ€˜λ„ κ·ΈλŒ€λ‘œ λ°˜ν™˜ν•œλ‹€.
각자 νƒ€μž…μ„ μ§€μ •ν•΄μ€€λ‹€λ©΄ λ‹€μŒκ³Ό 같이 μ½”λ“œλ₯Ό μ§œμ•Όν•œλ‹€.

Function TestString( text: string ): string{
  return text;
}

Function TestNumber( text: number ): number{
  return text;
}

Function TestBoolean( text: boolean ): boolean{
  return text;
}

μ½”λ“œλŠ” λ™μΌν•˜λ‚˜ 데이터 νƒ€μž…μ΄ λ‹€λ₯΄κΈ°μ— νƒ€μž…μ— λ”°λ₯Έ ν•¨μˆ˜λ₯Ό 각각 λ§Œλ“€μ–΄μ£Όμ—ˆλ‹€.
μ°Έ λΉ„νš¨μœ¨μ μΈ μ½”λ“œκ°€ 아닐 수 μ—†λ‹€. πŸ€” 이럴 λ•Œ μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λ©΄ νŽΈν•˜λ‹€.
μ œλ„€λ¦­μ„ μ‚¬μš©ν•΄μ„œ 데이터λ₯Ό λ„˜κ²¨λ³΄λ„λ‘ ν•˜μž.

​

Function Test<T>( text: T ): T{
  return text;
}

Test<string>(’string’);
Test<number>(5);
Test<boolean>(true);

μ œλ„€λ¦­μ€ 이런 λ°©μ‹μœΌλ‘œ μ‚¬μš©ν•˜λ©΄ νŽΈν•˜λ‹€ ✌️