generic

Info: πŸ“ μ™„μ„±νŒŒμΌ



Info: πŸ’‘ **
**


1. μ œλ„€λ¦­κ°œμš”

Info: πŸ”Ή νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λ‹€λ³΄λ©΄, μ„ μ–Έμ‹œμ— νƒ€μž…μ„ μ§€μ •ν•˜κΈ°κ°€ μ–΄λ €μš΄ κ²½μš°κ°€ μžˆλ‹€.
μ œλ„€λ¦­μ΄λž€ νƒ€μž…μ„ 마치 ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°μ²˜λŸΌ μ‚¬μš©ν•˜λŠ” 것

μ œλ„€λ¦­μ€ μ»΄ν¬λ„ŒνŠΈ λ˜λŠ” ν•¨μˆ˜μ—μ„œ μ‚¬μš©ν•˜λŠ” λ°μ΄ν„°μ˜ νƒ€μž…μ„ μ™ΈλΆ€μ—μ„œ μ§€μ •ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.
μ–΄λ–€ νƒ€μž…μ˜ 데이터λ₯Ό μ‚¬μš©ν•  μ§€λ₯Ό μ„ μ–Έ μ‹œμ μ΄ μ•„λ‹ˆλΌ, 생성 μ‹œμ μ— νƒ€μž…μ„ λͺ…μ‹œν•˜μ—¬ ν•˜λ‚˜μ˜ νƒ€μž…λ§Œμ΄ μ•„λ‹Œ λ‹€μ–‘ν•œ νƒ€μž…μ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 기법이닀.
ν•œλ²ˆμ˜ μ„ μ–ΈμœΌλ‘œ λ‹€μ–‘ν•œ νƒ€μž…μ— μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” μž₯점이 μžˆλ‹€.
νƒ€μž…μ„ ν•˜λ‚˜μ˜ λ³€μˆ˜μ²˜λŸΌ μ·¨κΈ‰ν•˜μ—¬ μœ μ—°ν•œ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜κ²Œ ν•œ 것이 μ œλ„€λ¦­μ΄λΌ ν•  수 μžˆλ‹€.

2. ν•¨μˆ˜μ™€ νƒ€μž…

Info: πŸ“’ ν•¨μˆ˜μ— νƒ€μž…μ„ μ„ μ–Έν•΄λ³΄μž
ν•¨μˆ˜λŠ” λ³€μˆ˜ νƒ€μž…κ³Ό λ°˜ν™˜ νƒ€μž…μ„ μ§€μ •ν•΄μ•Όν•œλ‹€

basic.ts

  1. ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄λ³΄μž
/**
 * 06 functions & types
 * **/

function add(a:number,b:number){
	return a+b;
}

  1. λ°˜ν™˜κ°’μ˜ νƒ€μž…μ§€μ •
function add(a: number, b: number): number | string {
	return a + b;
}

basic.ts

  1. output ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄λ³΄μž
function output(value:any){
	console.log(value)
}
output("좜λ ₯")

  1. λ°˜ν™˜νƒ€μž…μ΄ void 둜 ν™•μΈλœλ‹€
  2. void λŠ” null, undefined 와 같은 λΉ„μ–΄μžˆλŠ” κ°’μ˜ μ˜λ―Έμ΄λ‚˜ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ΄ λΉ„μ–΄μžˆμŒμ„ μ˜λ―Έν•œλ‹€
  3. return 을 ν•¨μˆ˜μ— μΆ”κ°€ν›„ λ‹€μ‹œ λ°˜ν™˜νƒ€μž…μ„ ν™•μΈν•˜λ©΄ any 둜 λ³€κ²½λœκ²ƒμ„ λ³Όμˆ˜μžˆλ‹€

3. μ œλ„€λ¦­

3-1 예제

basic.ts

  1. insertAtBeginning ν•¨μˆ˜ μž‘μ„±
function insertAtBeginning(array:any[],value:any){
	const newArr=[value,...array] //1
	return newArr; //2
}
  1. newArr 에 spred operator λ₯Ό μ‚¬μš©ν•˜μ—¬ value 와 배열을 μ—°κ²°ν•œλ‹€
  2. newArr 을 λ¦¬ν„΄ν•œλ‹€

  1. λ‹€μŒ ν•¨μˆ˜ μž‘μ„±
const testArr = [1, 2, 3]; //1
const updateArr = insertAtBeginning(testArr, -1); //2
  1. testArr 에 λ°°μ—΄λ‘œ 아무 μˆ«μžλ‚˜ λ„£λŠ”λ‹€
  2. updateArr 에 insertAtBeginningν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ 인자둜 testArr κ³Ό -1 을 μ „λ‹¬ν•œλ‹€
  3. updataArr의 리턴값은 μ΅œμ’…μ μœΌλ‘œ [-1,1,2,3] 이 될것이닀
  4. 확인해야 ν•  뢀뢄은 각 λ¬Έμž₯의 νƒ€μž…μ΄λ‹€. 마우슀λ₯Ό λ³€μˆ˜λͺ…μœ„μ— μ˜¬λ €μ„œ μΆ”λ‘ λœ νƒ€μž…μ„ ν™•μΈν•΄λ³΄μž
    μ•„λž˜μ˜ μ΄λ―Έμ§€μ²˜λŸΌ testArr 은 number , updateArr 은 any둜 확인이 λœλ‹€

updateArr μ—μ„œ inserAtBeginning ν•¨μˆ˜μ˜ 인자둜 λ„˜κ²¨μ§€λ©΄μ„œ any νƒ€μž…μœΌλ‘œ μ§€μ •λ˜μ—ˆκΈ° λ•Œλ¬Έ

array 의 νƒ€μž…μ„ number 둜 μ§€μ •ν• κ²½μš° λ¬Έμžν˜•νƒœλ‘œ μž…λ ₯λ°›λŠ” 숫자λ₯Ό ν™œμš©ν• μˆ˜ μ—†μœΌλ―€λ‘œ anyλ₯Ό μ¨μ•Όν•œλ‹€λŠ” μ „μ œλ‘œ μ§„ν–‰ν•œλ‹€.

  1. typescript λŠ” insertAtBeginning ν•¨μˆ˜ λ‚΄ λ§€κ°œλ³€μˆ˜μ˜ 배열은 any νƒ€μž…μœΌλ‘œ μΆ”λ‘ ν•˜λ©° ν•˜μœ„ λͺ¨λ“  객체, 값은 anyνƒ€μž…μœΌλ‘œ μƒκ°ν•˜κ²Œ λœλ‹€.

μ—¬λŸ¬ ν˜•νƒœμ˜ 값을 전달받아 λ³΅μž‘ν•œ 일을 ν•˜λŠ” ν•¨μˆ˜μ˜ 경우 any νƒ€μž…μ˜ μ‚¬μš©μ΄ λΆˆκ°€ν”Ό ν• λ•Œκ°€ μžˆλ‹€

ν•˜μ§€λ§Œ any λ₯Ό μ‚¬μš©ν•˜λ©΄ ν•¨μˆ˜ν˜ΈμΆœ 이후 λ°˜ν™˜λ˜λŠ” 값은 λͺ¨λ‘ any νƒ€μž…μœΌλ‘œ μΆ”λ‘ λ˜μ–΄ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ κΈ°λŠ₯을 μ œλŒ€λ‘œ μ‚¬μš©ν• μˆ˜ μ—†κ²Œλœλ‹€.
  1. μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ¬Έμžμ—΄μ„ 자λ₯΄λŠ” ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•΄λ³΄μž
updateArr[0].splice('')

μœ„μ˜ ν•¨μˆ˜λŠ” μ»΄νŒŒμΌν›„ 좜λ ₯해보면 였λ₯˜κ°€ λ‚œλ‹€

νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” 였λ₯˜κ°€ λ‚˜μ§€ μ•Šμ§€λ§Œ μ‹€ν–‰μ‹œμ— 였λ₯˜κ°€ λ°œμƒν•œλ‹€.
splice ν•¨μˆ˜λŠ” 문자 νƒ€μž…μ—λ§Œ μ‚¬μš©ν• μˆ˜ μžˆλŠ” λ©”μ†Œλ“œμ΄κ³  updateArr 의 νƒ€μž…μ€ any 이닀.
ν•˜μ§€λ§Œ μ‹€μ§ˆμ μœΌλ‘œ updateArr 내뢀에 μ €μž₯된 κ°’ testArr의 νƒ€μž…μ€ number 이며
μ΅œμ’…μ μœΌλ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ splice λ©”μ†Œλ“œμ—μ„œ μ‚¬μš©ν• μˆ˜ μ—†λŠ” number μžλ£Œν˜•μ— μ‚¬μš©λ˜μ—ˆμœΌλ―€λ‘œ 였λ₯˜κ°€ λ‚œλ‹€

  1. Generic 을 μ‚¬μš©ν•œ ν•΄κ²°

μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λ©΄ μ•„λž˜μ™€ 같이 μž‘μ„±λ‹¨κ³„μ—μ„œ μ—λŸ¬κ°€ κ²€μΆœλ˜λŠ”κ²ƒμ„ 볼수 μžˆλ‹€

function insertAtBeginning<T>(array: T[], value: T) {
	const newArr = [value, ...array];
	return newArr;
}
const testArr = [1, 2, 3];
const updateArr = insertAtBeginning(testArr, -1);
updateArr[0].splice("");//updateArrμ—λŠ” number κ°€ μžˆμœΌλ―€λ‘œ 였λ₯˜
console.log(updateArr[0].splice(""));
  1. λ¬Έμžμžλ£Œν˜•μ„ μ „λ‹¬ν•΄λ³΄μž
  2. insertAtBeginning ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ 인자둜 string 을 μ „λ‹¬ν•œλ‹€.
const stringArr = insertAtBeginning(["a", "b"], "c");
stringArr[0].split("");
console.log(stringArr[0].split(""));

b. generic type 으둜 μ§€μ •λœ λ§€κ°œλ³€μˆ˜λŠ” μ „λ‹¬λœ κ°’μ˜ νƒ€μž…μ— 따라 μΆ”λ‘ λœλ‹€.

  1. 컴파일
npx tsc
  1. 싀행확인

λŒ“κΈ€ 남기기