πΒ νμ μ ν¨μμ νλΌλ―Έν°μ²λΌ μ¬μ©νλ λ¬Έλ²
νμ μ λ겨 νμ μ λ°λλ€.
μ λ€λ¦μ μ΄μ©νλ©΄ classλ ν¨μ, interfaceλ₯Ό λ€μν typeμΌλ‘ μ¬μ¬μ©ν μ μλ€.
μ μΈν λ, type νλΌλ―Έν°λ§ μ μ΄μ£Όκ³
μμ±νλ μμ μμ μ¬μ©νλ typeμ κ²°μ νλ€.
βοΈΒ EX 1)
function getText<T>(text: T) {
return text;
}
const message = getText<string>('hi');
const useId = getText<number>(100);
βοΈΒ EX 2)
β
interface Person {
name: string;
age: number;
}
interface User {
name: string;
age: string;
}
interface Id {
name: string;
age: boolean;
}
const jane: Person = {
name: 'Jane',
age: 11,
}
const tom: User = {
name: 'Tom',
age: '11'
}
const peter: Id = {
name: 'Peter',
age: true,
}
βοΈ
interface Anyone <T> {
name: string;
age: T;
}
const mac: Anyone<number> = {
name: 'Mac',
age: 10,
}
const jerry: Anyone<string> = {
name: 'Jerry',
age: '12',
}
const trudy: Anyone<boolean> = {
name: 'Trudy',
age: true,
}
βοΈΒ EX 3)
β
function getSize(arr: number[] | string[] | boolean[] | object[]):number {
return arr.length
}
const arr1 = [1, 2, 3];
getSize(arr1) //3
const arr2 = ["a", "b", "c"];
getSize(arr2)
const arr3 = [false, true, false];
getSize(arr3)
const arr4 = [{}, {}, {name: "Tom"}];
getSize(arr4)
μ λμ¨ νμ μ μ΄μ©νμ¬ νμ μ λλ €κ°λ건 μ’μ§ μμ μ½λμ΄λ€.(μ¬μ¬μ©μ± μΈ‘λ©΄)
function getSize<T>(arr: T[]): number {
return arr.length
}
const arr1 = [1, 2, 3];
getSize<number>(arr1)
const arr2 = ["a", "b", "c"];
getSize<string>(arr2)
const arr3 = [false, true, false];
getSize<boolean>(arr3)
const arr4 = [{}, {}, {name: "Tom"}];
getSize<object>(arr4)
interface Mobile<T> {
name: string;
price: number;
option: T;
}
const m1: Mobile<{color: string, coupon: boolean}> = {
name: "s21",
price: 1000,
option: {
color: "black",
coupon: false
}
}
const m2: Mobile<string> = {
name: "s22",
price: 2000,
option: "good"
}