๐ŸŽˆ ํƒ€์ž…ํ˜ธํ™˜ ์ด๋ž€?

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์—์„œ ํŠน์ • ํƒ€์ž…์ด ๋‹ค๋ฅธ ํƒ€์ž…์— ์ž˜ ๋งž๋Š”์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•ด ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์—์„œ ๋‘ ๊ฐœ์˜ ํƒ€์ž…์ด ์„œ๋กœ ํ˜ธํ™˜์ด ๋˜๋Š”์ง€๋ฅผ ์ ๊ฒ€ํ•˜๋Š” ๊ฒƒ์„ ํƒ€์ž… ํ˜ธํ™˜์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค. 

interface Developer {
  name: string;
  skill: string;
}
interface Person {
  name: string;
}
var developer: Developer;
var person : Person;

person = developer;

์ด๋ ‡๊ฒŒ Developer์™€ Person์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ค‘๋ณต๋˜๋Š” ์†์„ฑ์€ name๋ฟ์ด๋‹ค. Developer๋Š” name๊ณผ skill์ด๋ผ๋Š” ์†์„ฑ์ด ์ด 2๊ฐœ๋‚˜ ์žˆ๊ณ , Person์€ name์ด๋ผ๋Š” ์†์„ฑ 1๊ฐœ๋ฟ. ๋งŒ์•ฝ ์œ„์—๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ ์–ธํ•˜๊ณ  ์•„๋ž˜๋Š” ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•ด๋„ ์‹ค์ œ๋กœ ์ด ๋‘ ๊ฐœ์˜ ํƒ€์ž…์€ ๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค. ํƒ€์ž…์— ์ •์˜๋˜์–ด ์žˆ๋Š” ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์‹ค์ œ๋กœ ํ˜ธํ™˜ ๋˜๋Š”์ง€๋ฅผ ์ ๊ฒ€ํ•˜๋Š”๋ฐ ์ด๋Ÿฐ ๊ฒƒ์„ ๊ณต์‹๋ฌธ์„œ์—์„œ๋Š” ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋์„ ๋•Œ,

person = developer;

์ด์ฒ˜๋Ÿผ ์˜ค๋ฅธ์ชฝ์—๋Š” ๋” ๋งŽ์€ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ฑฐ๋‚˜ ๋” ํฐ ๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ์„ ๋•Œ์— ์™ผ์ชฝ๊ณผ ํ˜ธํ™˜์ด ๋œ๋‹ค.  ๋” ๊ฐ์ฒด๊ฐ€ ๋งŽ์€ ์†์„ฑ์„ ๊ฐ€์ง„, ๊ตฌ์กฐ์ ์œผ๋กœ ๋” ํฐ ๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๐ŸŽ‡ ๋‹ค๋ฅธ ์˜ˆ์‹œ 01

var add = function(a: number) {
  console.log(a);
}

var sum = function(a: number, b: number) {
  return a + b;
}

์—ฌ๊ธฐ์„œ add์™€ sum์˜ ์ฐจ์ด์ ์€ sumํ•จ์ˆ˜๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ ํ•œ ๊ฐœ๊ฐ€ ๋” ๋“ค์–ด์žˆ๋‹ค. ๊ทธ๋ž˜์„œ sum์ด๋ผ๋Š” ํ•จ์ˆ˜ ์ž์ฒด๊ฐ€ add๋ผ๋Š” ํ•จ์ˆ˜๋ณด๋‹ค ๋” ํฌ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํฌ๋‹ค๋ผ๋Š” ์˜๋ฏธ๋Š” ์ถ”๊ฐ€์ ์œผ๋กœ ์˜ต์…˜๋“ค์„ ๋” ์ œ๊ณตํ•œ๋‹ค.

 

๐ŸŽ‡ ๋‹ค๋ฅธ ์˜ˆ์‹œ 02

interface Empty<T> {

}
var empty1: Empty<string>;
var empty2: Empty<number>;
empty1 = empty2;
empty2 = empty1;

๋งจ ์œ„์— ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์•ˆ์— ๊ฐ’์ด ๋น„์–ด์žˆ์–ด์„œ ์–ด๋–ค ๊ฐ’์ด ๋“ค์–ด์™€๋„ ๋™์ผํ•œ ํƒ€์ž…์ด๋ผ๊ณ  ๊ฐ„์ฃผํ•œ๋‹ค. 

 

๐ŸŽ‡ ๋‹ค๋ฅธ ์˜ˆ์‹œ 03 : ์ œ๋„ค๋ฆญ

interface NotEmpty<T> {
  data:T;
}
var notEmpty1: NotEmpty<string>;
var notEmpty2: NotEmpty<number>;
notEmpty1 = notEmpty2;
notEmpty2 = notEmpty1;

์ด๋ ‡๊ฒŒ ์ œ๋„ค๋ฆญ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ํƒ€์ž…์ด ๋ฐ”๋€๊ฑธ๋กœ ๊ฐ„์ฃผ๋˜์–ด ์„œ๋กœ ํƒ€์ž… ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š์•„ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

+ Recent posts