โœ๐Ÿป [Code Camp_TIL] 9์ผ์ฐจ: Typescript

code_Jยท2023๋…„ 4์›” 1์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
14/41
post-thumbnail

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ


์ˆซ์ž์™€ ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ๋ณ€์ˆ˜์— ๋‹ด์•„์ฃผ๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์— ๋ฐ˜ํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‘˜์„ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜์— ๋‹ด์•„์ค€๋‹ค. ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ฉด ๋ฌธ์ž๋ฅผ ๋„ฃ์—ˆ๋‹ค๊ฐ€, ๋‚˜์ค‘์— ์ˆซ์ž๋ฅผ ์žฌํ• ๋‹นํ•ด์ฃผ๋Š” ๋“ฑ ์ž์œ ๋กœ์šด ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋Ÿฐ ์ ์ด ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ์—๋Š” ํŽธ๋ฆฌํ–ˆ์ง€๋งŒ, ํฐ ์„œ๋น„์Šค๋ฅผ ์—ฌ๋Ÿฌ ๋ช…์ด ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ์— ์„œ๋น„์Šค์˜ ์•ˆ์ •์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ง€์ •ํ•˜๊ณ , ์žฌํ• ๋‹น์ด ์•ˆ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค!


ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•


๋ณ€์ˆ˜๋ช… ๋’ค์— ํƒ€์ž…์„ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.

let aaa : string = "์•ˆ๋…•ํ•˜์„ธ์š”"
let bbb : number = 123
let ccc : boolean = true

๊ฐ์ฒด

๊ฐ์ฒด์˜ ๊ฒฝ์šฐ์—๋Š” Interface๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง€์ •ํ•ด์ค€๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ์ง€์ •ํ•  ๋•Œ์—๋Š” interface์˜ I์™€ ๋ณ€์ˆ˜๋ช…์„ ํ•ฉ์ณ์ฃผ๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋‹ค.

Interface IProfile{
  name: string;
  age: number;
}

let profile:IProfile = { name: "ํ™๊ธธ๋™", age: 13}


// age ํƒ€์ž…์ด ๋ฌธ์ž์—ด์ด๊ฑฐ๋‚˜ ์ˆซ์ž์ผ ๊ฒฝ์šฐ
interface IProfile{
  name: string
  age: string | number
}

const profile:IProfile = { name: "ํ™๊ธธ๋™", age: 13 or "13์‚ด"}

props๋„ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์—, ์œ„์™€ ๊ฐ™์ด ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.


๋ฐฐ์—ด

//๋ฌธ์ž์—ด๋งŒ ์žˆ๋Š” ๋ฐฐ์—ด
let aaa:string[] = ["์งฑ๊ตฌ", "์œ ๋ฆฌ", "ํ›ˆ์ด"]

//๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž์—ด
let bbb:(string | number)[] = [1, 2, 3, "๋งน๊ตฌ", "์ฒ ์ˆ˜"]

//๋ชจ๋‘ ์ˆซ์ž์ด๊ฑฐ๋‚˜ ๋ชจ๋‘ ๋ฌธ์ž์ธ ๋ฐฐ์—ด
let ccc: string[] | number[] = ["์งฑ์•„", "ํฐ๋‘ฅ์ด"]
ccc=[1, 2, 3]

ํ•จ์ˆ˜

ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž…๋„ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

/* props๋ฅผ ์ฃผ๋Š” ์ชฝ ์ปดํฌ๋„ŒํŠธ */
// ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž… ์ง€์ •

const add = (a: number, b: number) => {
  return a + b;
};
return (
    // ์ปดํฌ๋„ŒํŠธ์˜ JSX๋ถ€๋ถ„
    <Component add={add} />
  );

--------------------------------------------------------------

/* props๋ฅผ ๋ฐ›๋Š” ์ชฝ ์ปดํฌ๋„ŒํŠธ */
// ํ•จ์ˆ˜์˜ ํƒ€์ž… ์ง€์ •
// ๋ฆฌํ„ด๋˜๋Š” ๊ฐ’์˜ ํƒ€์ž…์„ ์ ์šฉ. ๋ฆฌํ„ด๋˜๋Š” ๊ฐ’์ด ์—†๋‹ค๋ฉด void ์ ์–ด์ฃผ๋ฉด ๋จ.
interface IProps {
  add: (a: number, b: number) => number;
}

const Component2 = (props: IProps) => {
  props.add(1, 2);
  return (
    //์ปดํฌ๋„ŒํŠธ์˜ JSX๋ถ€๋ถ„
  );
};

onChange ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜

์ด๋ฒคํŠธ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ(event) ํƒ€์ž…์„ ์ง€์ •ํ•ด์ค„ ๋•Œ์—๋Š” ChangeEvent๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ChangeEvent๋Š” ๋ฆฌ์•กํŠธ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— import ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

// HTML ํƒœ๊ทธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ ์–ด์ค˜์•ผํ•จ
const onChangeMyWriter = (event: ChangeEvent<HTML inputelement>)=>{
			setMywriter(event.target.value)
	}

์ด๋ ‡๊ฒŒ ๋ณ€์ˆ˜์— ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ๊ณ  ๋‚˜๋ฉด, ํƒ€์ž…์— ๋งž์ง€ ์•Š๋Š” ๊ฐ’์„ ํ• ๋‹นํ–ˆ์„ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค!


์—ฌ๊ธฐ์„œ ์ž ๊น!

๋ธŒ๋ผ์šฐ์ €๋Š” HTML, CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์ฝ์„๊นŒ? ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์‹คํ–‰ ์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€๊ฒฝ(์ปดํŒŒ์ผ)๋˜์–ด ์‹คํ–‰๋œ๋‹ค.

์ปดํŒŒ์ผ: ํ•˜๋‚˜์˜ ์–ธ์–ด๊ฐ€ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ์ž‘์—…
ํŠธ๋žœ์ŠคํŒŒ์ผ: ๋™์ผํ•œ ์–ธ์–ด์—์„œ ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ์ž‘์—…


profile
Web FE ๊ฐœ๋ฐœ์ž ์ทจ์ค€์ƒ

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