๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋ก ํŠธ์—”๋“œ/TypeScript

์ธํ„ฐํŽ˜์ด์Šค

by alswlfl 2023. 1. 3.

์ธํ„ฐํŽ˜์ด์Šค

: ์ƒํ˜ธ ๊ฐ„์— ์ •์˜ํ•œ ์•ฝ์† ํ˜น์€ ๊ทœ์น™

  • ๊ฐ์ฒด๋Š” objectํƒ€์ž…์œผ๋กœ ๋ช…์‹œ
  • object์—๋Š” ํŠน์ • ์†์„ฑ ๊ฐ’์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†์Œ
  • property๋ฅผ ์ •์˜ํ•ด์„œ ๊ฐ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ
let user:object;  //๊ฐ์ฒด๋Š” objectํƒ€์ž…์œผ๋กœ ๋ช…์‹œ
user={
  name:'xx'
  age:30
}
console.log(user.name)  //์˜ค๋ฅ˜๋ฐœ์ƒ -> object์—๋Š” ํŠน์ • ์†์„ฑ ๊ฐ’์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†์Œ

์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ

  • optional: ?๋กœ ์ž‘์„ฑ
  • readonly: ์ฝ๊ธฐ ์ „์šฉ ์†์„ฑ(์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅ)
  • [key]:value ๋กœ ์„ค์ •ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
type Score='A'|'B'|'C'|'F';

interface User{
  name: string;
  age:number;
  gender? : string;  //gender๋Š” ์‚ฌ์šฉํ•ด๋„ ๋˜๊ณ  ์•ˆํ•ด๋„ ๋˜๋Š” optional -> ?๋กœ ์ž‘์„ฑ
  readonly birthYear:number;  //readonly๋Š” ์ฝ๊ธฐ ์ „์šฉ ์†์„ฑ -> ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Œ(์ƒ์„ฑ์‹œ์—๋งŒ ํ• ๋‹น ๊ฐ€๋Šฅํ•˜๊ณ  ๊ทธ ์ดํ›„์—๋Š” ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€)
  //๋ฌธ์ž์—ด ์ธ๋ฑ์Šค ์„œ๋ช… ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•
  [grade:number]:string;  //number๋ฅผ key๋กœ ํ•˜๊ณ , string์„ value๋กœ ์„ค์ •ํ•˜์—ฌ, ์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€๋Šฅ
  // [grade:number]:Score;  //Score์— ์žˆ๋Š” ๊ฐ’ ์ด์™ธ์—๋Š” ์ž…๋ ฅ ๋ถˆ๊ฐ€๋Šฅ
}
let user: User= {
  name:'xx',
  age:30,
  birthYear: 2000,
}
user.age=10;
user.gender="male";

console.log(user.age)

์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ•จ์ˆ˜ ์ •์˜ํ•˜๊ธฐ

  •  (์ธ์ž ๊ฐ’): ๋ฐ˜ํ™˜ ๊ฐ’
interface Add{
  (num1:number, num2:number): number;  //(์ธ์ž ๊ฐ’):๋ฐ˜ํ™˜ ๊ฐ’
}

const add: Add=function(x,y){
  return x+y;
}

add(10,20);

interface IsAdult{
  (num:number): boolean;  
}

const isAdult: IsAdult=(x)=>{
  return x>19;
}

์ธํ„ฐํŽ˜์ด์Šค๋กœ ํด๋ž˜์Šค ์ •์˜ํ•˜๊ธฐ

  • ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํด๋ž˜์Šค ์ •์˜ ํ•  ๋•Œ, implements ์‚ฌ์šฉ
  • ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ ํ•  ๋•Œ extends ์‚ฌ์šฉ
//implements
interface Car{
  color: string;
  wheels:number;
  start():void;
}

class Bmw implements Car{
  color;
  wheels=4;
  constructor(c:string){
    this.color=c;
  }
  start(){
    console.log('go...')
  }
}
const b=new Bmw('green');

//extends ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ ํ•˜๊ธฐ
interface Benz extends Car{
  door:number;
  stop():void;
}

class Benz implements Car{
   color;
  wheels=4;
  constructor(c:string){
    this.color=c;
  }
  start(){
    console.log('go...')
  }
}