스파이더 웹 개발

자바스크립트 - 제네릭 본문

JavaScript

자바스크립트 - 제네릭

스파이더웹 2022. 10. 11. 16:25
728x90
반응형

1. 제네릭의 장점

아래와 같이 유연하게 대처할 수 있다.

function logText(text: string){
    console.log(text);
    return text;
}

logText('하이');

function logNumber(num: number){
    console.log(num);
    return num;
}

logNumber(10);

function logAll<T>(text: T): T {
    console.log(text);
    return text;
}

const str1 = logAll<string>('abc');
str.split('');
const login = logAll<boolean>(true);

제네릭 추가

 

// function logText(text){
//     console.log(text);
//     return text;
// }

// logText("hello");


function logText(text: string){
    console.log(text);
    return text;
}

logText('하이');

function logNumber(num: number){
    console.log(num);
    return num;
}

logNumber(10);

function logAll<T>(text: T): T {
    console.log(text);
    return text;
}

const str1 = logAll<string>('abc');
str.split('');
const login = logAll<boolean>(true);

interface Dropdown<T>{
    value: T;
    selected: boolean;
}

const a: Dropdown<number> = {
    value: 10,
    selected: true
};

//제네릭의 타입 제한
// function logTextLength<T>(text: T[]): T[] {
//     console.log(text.length);
//     return text;
// }

// logTextLength<string>(['hi','ab']);

//정의된 타입 이용하기
interface LengthType {
    length: number;
}

function logTextLength<T extends LengthType>(text: T): T {
    console.log(text.length);
    return text;
}

logTextLength('a');

//key of
interface ShoppingItem {
    name: string;
    price: number;
    stock: number;
}

function getShoppingItemOption<T extends keyof ShoppingItem>(itemOption: T): T{
    return itemOption;
}

getShoppingItemOption("stock");

 

 

 

참고

https://www.inflearn.com/course/%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%9E%85%EB%AC%B8/dashboard

 

타입스크립트 입문 - 기초부터 실전까지 - 인프런 | 강의

타입스크립트를 시작하는 분들을 위한 강의입니다. 최신 자바스크립트 문법을 모르는 분들도 쉽게 배울 수 있도록 교과 과정을 구성하였습니다. 어렵게만 느껴지는 타입스크립트를 입문자 관

www.inflearn.com

 

728x90
반응형

'JavaScript' 카테고리의 다른 글

자바스크립트 복습(2)  (0) 2022.10.14
자바스크립트 - 복습  (0) 2022.10.14
타입스크립트 확장  (0) 2022.10.11
타입스크립트 기본  (0) 2022.10.11
자바스크립트 고급 문법(2)  (0) 2022.10.09
Comments