Function & Generic
νμ΅ ν€μλ
ν¨μ
μ λ€λ¦
Function
ν¨μμ μΈμ
λ§€κ°λ³μμ νμ μ μ§μ ν΄μ£Όμ΄μΌ νλ€.
ν¨μμ λ°νκ° νμ μ
μλμΌλ‘ μΆλ‘
λκΈ° λλ¬Έμ λ€μκ³Ό κ°μ΄ μλ΅κ°λ₯νλ€.
function add(x: number, y: number): number {
return x + y;
}
function minus(x: number, y: number): number {
return x - y;
}
function multiply(x: number, y: number): number {
return x * y;
}
ν¨μννμ
ν¨μ μ μΈμκ³Ό λμΌνκ² λ§€κ°λ³μμ νμ μ μ§μ ν΄μ£Όμ΄μΌ νλ€.
const add = function (x: number, y: number) {
return x + y;
};
const minus = function (x: number, y: number) {
return x - y;
};
const multiply = function (x: number, y: number) {
return x * y;
};
π€ κ·Έλ°λ° ν¨μ ννμμ μ½λ μ€λ³΅μΈ λΆλΆλ€μ΄ μλλ° μ€μΌμ μμκΉ? type λ³μΉκ³Ό μΈν°νμ΄μ€λ₯Ό μ¬μ©ν΄μ μ€λ³΅λ μ½λλ₯Ό μ€μΌ μ μλ€! κ·Έλμ νμ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ κ²½μ°, ν¨μννμκ³Ό νμ΄ν ν¨μλ₯Ό μ νΈνλ€.
type TCommonFu = (x: number, y: number) => number;
interface ICommonFu {
(x: number, y: number): number;
}
const add: TCommonFu = function (x, y) {
return x + y;
};
const minus: ICommonFu = function (x, y) {
return x - y;
};
const multiply: ICommonFu = function (x, y) {
return x * y;
};
μ λ€λ¦
π€ μ λ€λ¦μ΄ νμν μν©
ν¨μμ λ§€κ°λ³μ λμν νμ
μ΄ μ§μ λμ΄μΌ νλ€. κ·Έλ λ€λ©΄ κ·Έλ λ§λ€ νμ
μ μΆκ°ν΄μ£Όμ΄μΌ νλ κ²μΌκΉ? λ§€κ°λ³μκ° κΈΈμ΄μ§κ³ μ€νλ € μ½λκ° λ³΅μ‘ν΄μ§λλ°? κ·Έλ λ€λ©΄ any μ§μ ν΄μΌνλ κ±ΈκΉ? κ·Έκ²λ μλλ€! κ·Έλμ λ±μ₯ν κ°λ
μ΄ μ λ€λ¦ ν¨μ
μ΄λ€.
function getSize(values: number[] | string[] | (number | string)[]): number {
return values.length;
}
getSize(['1', '2', '3']);
getSize([1, 2, 3]);
getSize(['1', '2', '3', 1, 3, 4]);
π₯ μ λ€λ¦ ν¨μ
π μ λ€λ¦(Generic) : μΌλ°μ μΈ λλ ν¬κ΄μ μΈ μ΄λΌλ λ»
λ루λ루 λͺ¨λ νμ μ κ°μ λ€ μ μ©ν μλ λ²μ©μ μΈ ν¨μλ‘ μ΄ν΄νλ©΄ λλ€.
function func<T>(value: T): T {
return value;
}
let num = func(10); // number νμ
ν¨μ μ΄λ¦ λ€μ <>
μ T
λ₯Ό μ μΈνλ€. κ·Έλ¦¬κ³ λ§€κ°λ³μμ λ°νκ°μ νμ
μ T
λ‘ μ€μ νλ€. T
μ μ΄λ€ νμ
μ΄ ν λΉλ μ§λ ν¨μκ° νΈμΆλ λ κ²°μ λλ€.
func(10) μ²λΌ Number
νμ
μ κ°μ μΈμλ‘ μ λ¬νλ©΄ λ§€κ°λ³μ valueμ Number
νμ
μ κ°μ΄ μ μ₯λλ©΄μ Tκ° Number νμ
μΌλ‘ μΆλ‘ λλ€. μ΄λ Tλ Number νμ
μΌλ‘ μΆλ‘ λκ³ , func ν¨μμ λ°νκ° νμ
λν Number νμ
μ΄ λλ€.

π©π»βπ» ν΄λΉ μ½λλ₯Ό μ λ€λ¦μ μ¬μ©ν΄μ μμ ν΄λ³΄μ
function getSize(values: number[] | string[] | (number | string)[]): number {
return values.length;
}
function getSize<T>(values: T[]): number {
return values.length;
}
getSize(['1', '2', '3']);
getSize([1, 2, 3]);
getSize(['1', '2', '3', 1, 3, 4]);
π€Ήπ»ββοΈ μ λ€λ¦μ νμ©
type TUserBase<T> = {
name: string;
age: number;
likeFoods: T; // λͺ
νν νμ
μ λ£κΈ° μ΄λ €μΈλλ μ λ€λ¦μ μ΄μ©ν΄μ μ μ ν μ μλ€.
};
interface IUserBase<T> {
name: string;
age: number;
likeFoods: T;
}
const personHong: TUserBase<string[]> = {
name: 'νκΈΈλ',
age: 20,
likeFoods: ['κΉλ°₯', 'νΌμ'],
};
const personKim: TUserBase<null> = {
name: 'κΉμ² μ',
age: 27,
likeFoods: null,
};
const personLee: TUserBase<string> = {
name: 'μ΄λμ',
age: 24,
likeFoods: 'κΉλ°₯',
};
π μ°Έκ³
Last updated