๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
typescript

๐Ÿฆถ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ธํ„ฐํŽ˜์ด์Šค

by frontChoi 2025. 1. 12.
๋ฐ˜์‘ํ˜•

 

๐Ÿ“ฑ ์ธํ„ฐํŽ˜์ด์Šค

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ผ๋‹จ ๊ฐ’์˜ ํ˜•ํƒœ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒƒ์„ ๋• ํƒ€์ดํ•‘์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ’์˜ ํ˜•ํƒœ์— ๋Œ€ํ•œ ์ด๋ฆ„์„ ์ง“๋Š” ์—ญํ• ์„ ํ•œ๋‹ค

 

๐Ÿ’ฝ  ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ ๋ฐ ์‚ฌ์šฉ

// ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ ๊ฐ’์˜ ํ˜•ํƒœ์— ์ด๋ฆ„์„ ์ง€์Œ
// MusicInfo๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค์ด๊ณ  musicId,musidName,artist์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
interface MusicInfo {
  musicId: string;
  musidName: string;
  artist: string;
}

//playMusic๋ผ๋Š” ํ•จ์ˆ˜๋Š” param์„ ์ธ์ž๋กœ ๋ฐ›๊ณ  param์˜ ๊ฐ’ ํ˜•ํƒœ๋Š” MusicInfo๋Š” musicId,musidName,artist๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
function playMusic(param: MusicInfo) {
  console.log(`save musicId ${param.musicId}`);

  console.log(`play music ${param.musidName} / ${param.artist}`);
}

 

์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ MusicInfo๋ฅผ ์„ ์–ธํ•˜๊ณ  musicId,musidName,artist๋ฅผ string ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๊ณ 

playMusicํ•จ์ˆ˜์˜ ์ธ์ž์˜ ํƒ€์ž…์€ MusicInfo์œผ๋กœ ์ •์˜ํ•œ๋‹ค

MusicInfor์˜ ํƒ€์ž…์— ๋งž์ด ์•Š์œผ๋ฉด typescript์—์„œ๋Š” Error๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

 

 

โŒ›๏ธ ์ธํ„ฐํŽ˜์ด์Šค ์„ ํƒ์  ํ”„๋กœํผํ‹ฐ

// artist์˜ ๋ฐ”๋กœ๋’ค์— ?๋ฅผ ๋ถ™์ž„์œผ๋กœ์„œ ์„ ํƒ์  ํ”„๋กœํผํ‹ฐ๋กœ ์„ค์ •
interface MusicInfo2 {
  musicId: string;
  musidName: string;
  artist?: string;
  playtime: number;
}

// playMusic2์ธ์ž์˜ ํƒ€์ž…์„ MusicInfo2๋กœ ์ •์˜
function playMusic2(param: MusicInfo2): string {
  let str = "";
  str = `${param.musidName} ${param.artist}`;

  return str;
}
// artist๋ฅผ ๋„ฃ์ง€ ์•Š์•„๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค
playMusic2({
  musicId: "music_000",
  musidName: "์Œ์›1",
  playtime: 10,
});

MusicInfo2๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜ํ•˜๊ณ ,  playMusic2์˜ ์ธ์ž์˜ ํƒ€์ž…์„ MusicInfo2๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  playMusic2์— artist๋ฅผ ๋„ฃ์ง€ ์•Š์•„๋„ ํ•„์ˆ˜ํ”„๋กœํผํ‹ฐ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์˜ค๋ฅ˜๋ฅผ ๋ฑ‰์ง€ ์•Š๋Š”๋‹ค.

 

 

๐Ÿช™ ์ดˆ๊ณผ ํ”„๋กœํผํ‹ฐ ๊ฒ€์‚ฌ

์ดˆ๊ณผํ”„๋กœํผํ‹ฐ๋Š” ํƒ€์ž…์— ์ •์˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•œ๋‹ค.

 

// playTime์„ ์„ ํƒ์  ํ”„๋กœํผํ‹ฐ ์„ ์–ธ
interface MusicInfo3 {
  musicId: string;
  musicName: string;
  playTime?: number;
}

// param์˜ ํƒ€์ž…์„ MusicInfo3์œผ๋กœ ์„ ์–ธ
function PlayAdMusic(param: MusicInfo3) {
  //๋กœ์ง ์ฒ˜๋ฆฌ
}


// PlayAdMusic์˜ playsTime์„ ๋„ฃ์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋ฑ‰๋Š”๋‹ค. playsTime์€ MusicInfo3์— ์ •์˜๋˜์–ด์žˆ์ง€ ์•Š๋‹ค.
PlayAdMusic({
  musicId: "music_0000",
  musicName: "์Œ์›",
  //Error : ์ดˆ๊ณผ ํ”„๋กœํผํ‹ฐ
  //playsTime:123
});

MusicInfo3์— "playsTime"์œผ๋กœ  ๋„ฃ์„ ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฅผ ๋ฑ‰๋Š”๋‹ค. playsTime์€ MusicInfo3์— ์ •์˜ ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค.

 

์ด ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ• ๋ ค๋ฉด ๋ฐฉ๋ฒ•์€ ์žˆ๋‹ค

ํƒ€์ž…๋‹จ์–ธ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋ฉด ํ•  ์ˆ˜๋Š” ์žˆ์œผ๋‚˜ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ• ๊ฐ™์ง€๋Š” ์•Š๋‹ค.

//ํƒ€์ž… ๋‹จ์–ธ์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ
PlayAdMusic({
  musicId: "music_0000",
  musicName: "์Œ์›",
  playsTime: 123,
} as MusicInfo3);

 

 

๐Ÿฉน ํ•จ์ˆ˜ ํƒ€์ž…

ํ•จ์ˆ˜์—๋„ ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ •ํ•  ์ˆ˜ ๊ฐ€ ์žˆ๋‹ค

// ์ธ์ž์— src๋ฅผ ๋ฐ›๊ณ  boolean์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค
interface PlayFunc {
  (src: string): boolean;
}

// javascript์—์„œ๋Š” ํ•จ์ˆ˜๋„ ๋ณ€์ˆ˜ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
let mySearch: PlayFunc;

//๋ณ€์ˆ˜์— ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
mySearch = function (src) {
  console.log("src : ", src);

  return true;
};

 

๐Ÿงน ์ธ๋ฑ์„œ๋ธ” ํƒ€์ž…

๋ฐฐ์—ด์˜ ํ‚ค์— ํƒ€์ž…์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ๋ฑ์Šค ์„œ๋ช… ํƒ€์ž…์€ number,string,symbol ๋งŒ ์ œ๊ณต

interface StringArray {
  //๋ฐ˜ํ™˜ ํƒ€์ž…๋„ ํ•„์š”
  [index: number]: string;
}
let myArray: StringArray;
//๋ฐฐ์—ด์˜ ํ‚ค๋Š” ์ˆซ์ž์ด๊ณ  ๋ฆฌํ„ด๊ฐ’์€ ๋ฌธ์ž์—ด์ด๋‹ค
myArray = ["Bob", "Tom"];

 

 

ํ›„๊ธฐ

ํ˜„์žฌ๊นŒ์ง€๋Š” ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๋“ค๋งŒ ๋‹ค๋ฃจ์—ˆ๊ณ , ์ธ๋ฑ์„œ๋ธ”ํƒ€์ž…์€ ์ข€ ๋” ๊ฐœ์ธ์ ์œผ๋กœ ๋” ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•ด๋ณด์ธ๋‹ค

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€