νμ μ€ν¬λ¦½νΈ_μ λ€λ¦
πμ£Όμ : μ λ€λ¦
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.