Typescript 1. ํƒ€์ž…

Winneyยท2021๋…„ 2์›” 7์ผ
0

Typescript

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

๐ŸŒˆ ์ตœ๊ทผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ตํžˆ๊ณ  ์žˆ๋‹ค.
๊ณผ๊ฑฐ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉฐ ํƒ€์ž… ๋•Œ๋ฌธ์— ๊ณ ์ƒํ–ˆ๋˜ ์ ์ด ์žˆ์–ด์„œ ํƒ€์ž…์„ ์ง€์ •ํ•ด์ค€๋‹ค๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๊ต‰์žฅํ•œ ๋งค๋ ฅ์„ ๋Š๋ผ๊ณ  ์žˆ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ JS๋ณด๋‹ค ์žฌ๋ฏธ์žˆ๋‹ค. ๋ฌผ๋ก  ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ๊ฑฐ๋ผ ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ์ง€๋งŒ typescript๋ฅผ ์žฌ๋ฐŒ๋‹ค๊ณ  ๋Š๋ผ๋Š”๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์„๊นŒ?! ํ•˜๋‚˜์”ฉ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

1. ์™œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์“ธ๊นŒ?

์ œ์ผ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์™œ ์“ฐ๋Š”๊ฐ€?
1. ์ •์  ํƒ€์ž… ์ง€์›์œผ๋กœ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.
2. IDE์™€ ๊ฐ™์€ ๋„๊ตฌ์˜ ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
3. interface, generic์„ ํ†ตํ•ด OOP ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
4. ESNext๋ฅผ ์ง€์›ํ•œ๋‹ค.

2. ์–ด๋–ค ํƒ€์ž…๋“ค์ด ์žˆ์„๊นŒ?

๋จผ์ € ๊ธฐ๋ณธํƒ€์ž…๋งŒ ํ™•์ธํ•ด๋ณด์ž.

  • string : let animal: string = 'dog';
  • number : let ten: number = 10;
  • array
    : let fruit: Array<string> = ['banana', 'apple'];
    : let fruit: string[] = ['banana', 'apple'];
  • tuple : let address: [string, number] = ['seoul', 20]
  • object :
let person: {name: string, age:number} = {
    name: 'winney', 
    age: 10,
    };
  • boolean : let open: boolean = true;

์ถ”๊ฐ€์ ์ธ ํƒ€์ž…์€ ๋‚˜์ค‘์— ์ž‘์„ฑํ•  ์˜ˆ์ •!

3. ํ•จ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ํƒ€์ž…์„ ์ง€์ •ํ• ๊นŒ?

1) ์ธ์ž์™€ ๋ฐ˜ํ™˜๊ฐ’ ๋ชจ๋‘ ์ง€์ •

let sum = (a: number, b: number) : number => {
	return a + b;
}

๋ฐ˜๋“œ์‹œ ์ธ์ž๊ฐ€ 2๊ฐœ ์žˆ์–ด์•ผํ•œ๋‹ค.

2) Optional parameter

let sum = (a: number, b?: number) : number => {
	return a + b;
}

์ธ์ž ๋’ค์— ?๋ฅผ ๋ถ™์—ฌ์„œ ์ธ์ž๊ฐ€ ์—†์–ด๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ— optional parameter๋Š” ๋ฐ˜๋“œ์‹œ ๋’ค์— ์œ„์น˜ํ•ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ts์—์„œ ์ธ์‹ํ•˜์ง€ ๋ชป ํ•œ๋‹ค.

let sum = (a?: number, b: number) : number => {
	return a + b;
}

4. ๊ฐ์ฒด property ์ง€์ •์„ ๋” ํ˜„๋ช…ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์—†์„๊นŒ?

  • interface๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ์ฒด property๋ฅผ ์—ฌ๊ธฐ์ €๊ธฐ ์ค‘๋ณต์—†์ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
interface Person {
	name: string;
    age: number;
}

let winney: Person = {
	name: 'winney',
	age: 10,
}

let printUser = (user: Person) => {
	console.log(user)
}

interface ์‚ฌ์šฉ์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ณณ์— ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ํŽธํ•˜๊ฒŒ ์ง€์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

interface Developer extends Person {
	skill: string
}

let winney: Developer = {
	name: 'winney',
    age: 10,
    skill: 'ts'
}
  • interface๋Š” ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค => OOP

์ถ”๊ฐ€๋กœ ํƒ€์ž… ๋ณ„์นญ์ด๋ผ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค.

type Person = {
 name: string;
 age: number;
}

ํ˜•ํƒœ๋Š” interface์™€ ๋น„์Šทํ•˜๋‹ค.
ํ•˜์ง€๋งŒ interface์™€ ๋‹ฌ๋ฆฌ ํ™•์žฅ์ด ๋˜์ง€ ์•Š๊ณ  preview๊ฐ€ interface์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ณด์ธ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ interface๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋–ค ๊ฑธ ์‚ฌ์šฉํ•˜๋“  ์ผ๊ด„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

์ถœ์ฒ˜

profile
ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด

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