μ“°μœ½ν„°λ””/TypeScript

νƒ€μž…μŠ€ν¬λ¦½νŠΈ_μ œλ„€λ¦­

Kkan 2023. 2. 13. 11:36
728x90
λ°˜μ‘ν˜•

🎈주제: μ œλ„€λ¦­

 

1. μ œλ„€λ¦­μ΄λž€?

μ œλ„€λ¦­μ€ 보톡 C#μ΄λ‚˜ JAVA와 같은 μ–Έμ–΄μ—μ„œ μž¬μ‚¬μš©μ„±μ΄ 높은 μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€ λ•Œ 자주 ν™œμš©ν•œλ‹€.

특히, ν•œκ°€μ§€ νƒ€μž…λ³΄λ‹€ μ—¬λŸ¬ κ°€μ§€ νƒ€μž…μ—μ„œ λ™μž‘ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό 생성할 λ•Œ 주둜 μ‚¬μš©ν•œλ‹€.

 

μ˜ˆμ‹œ)

μ–΄λ–€ ν•¨μˆ˜κ°€ μžˆλ‹€.

이 ν•¨μˆ˜λŠ” 숫자λ₯Ό λ°›μ•„μ„œ λ‚΄λ³΄λ‚΄μ€˜!

 

function func(arg: number) {
  return arg;
}

func(123);

 

μ•„, μˆ«μžλž‘ λ¬Έμžλž‘ 같이 뢀탁해!

 

function func(arg: number | string) {
  return arg;
}

func(123);
func('hi');

 

 

μ•„ λ§žλ‹€. 배열도 ν•„μš”ν–ˆλ‹€. μˆ«μžλ°°μ—΄!

 

function func(arg: number | string | number[]) {
  return arg;
}

func(123);
func('hi');
func([1,2,3,4]);

 

μ•„ 문자 배열도 μ’€..

이거 계속 μΆ”κ°€ν•΄μ•Όν•˜λ‚˜..? κ·Έλƒ₯ any 써..?

 

 


2. μ œλ„€λ¦­ μ‚¬μš©

κ·Έλž˜μ„œ μ‚¬μš© ν•˜λŠ” 것이 μ œλ„€λ¦­μ΄λ‹€.

 

function func<T>(arg: T): T {
  return arg;
}

func(123);
func('hi');
func([1,2,3,4]);

 

  • func<νƒ€μž… λ³€μˆ˜ μ§€μ •>
  • arg: νƒ€μž… 인자
  • : νƒ€μž… λ°˜ν™˜

그럼 μ΄λŸ°μ‹μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.

 

function func<T>(arg: T): T {
  return arg;
}

func<number>(123);
func<string>('hi');
func<number[]>([1,2,3,4]);

 

2-1. ν•¨μˆ˜

 

type TypeFunc = <T>(arg: T) => T;
interface InterfaceFunc {
    <T>(arg: T): T;
}

function func<T>(arg: T): T {
    return arg;
}

const test1: TypeFunc = func;
const test2: InterfaceFunc = func;

 

2-2. 클래슀

 

class Print<T, U> {
    name: T;
    isStudent: U;

    constructor(name: T, isStudent: U) {
        this.name = name;
        this.isStudent = isStudent;
    }
}

const personName = new Print('kkan', true);
const personId = new Print(125223, false);

 

T / U 같은 것은 개인적인 κ·œμΉ™μ„ κ°€μ§€κ³  μ‚¬μš©ν•΄μ•Όν•œλ‹€.


3. μ œλ„€λ¦­ νƒ€μž… 쒁히기

μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λ‹€λ³΄λ©΄ μ˜λ¬Έμ„ λ“ λ‹€.

anyλž‘ 뭐가 λ‹€λ₯Έκ±°μ§€..?

κ·ΈλŸ΄λ•Œ μ‚¬μš©ν•˜λŠ” 것이..

 

extends
function print<T extends string | number>(arg: T): T {
    return arg;
}

print('kkan');
print(1234321);

 

그럼 λ‹€λ₯Έ νƒ€μž…μ€ λͺ»μ“°λ‚˜?

 

응 μ•ˆλΌ λŒμ•„κ°€~

 

 

End.

728x90
λ°˜μ‘ν˜•