728x90
제네릭을 이용하면 class, function, interface를 다양한 타입으로 재사용할 수 있다. 선언할 때 파라미터만 적어두고 사용할 때 타입을 지정해 주는 방법이다. 기본적인 제네릭 사용 방법 function getSize(arr : number[]) :number { return arr.length } const arr1 = [1,2,3] getSize(arr1) // 3 const arr2 = ["1","2","3"] getSize(arr2) // 3 동일한 형태로 만들었지만 매개변수가 number이냐, string이냐 에 따라서 에러가 생기는 부분이 있을 것이다. 이걸 빠르게 해결하기 위해선 유니온을 이용한 방법 function getSize (arr: number[] | string []..
this interface User{ name:string; } const Sam:User = { name:'Sam' } function showName(this:User, age:number, gender:'m'|'f') { // this를 사용하기 위해서 매개변수에 this와 this의 타입을 지정한다. console.log(this.name, age, gender) } const a = showName.bind(Sam); a(30, 'm') this를 Sam으로 바인딩하고 this를 사용하기 위해서 Sam의 타입과 같은 User로 명시해 준다. 이렇게 하면 this를 이용할 수 있다. 함수의 첫 번째 매개변수로 'this' 타입을 지정하는 것은 'this'의 컨텍스트를 명시적으로 선언하는 방법이다...
index signature Index Signature은 객체의 속성 이름과 타입이 미리 정의되어 있지 않을 때, 객체에 동적으로 속성을 추가할 수 있는 방법을 제공한다. 기본형태 interface Obj{ [key : T] : U } // T : 인덱스의 타입 (대부분 string 이나 number) // U : 값의 타입 사용 예시 type Score = "A" | "B" | "C" interface User { name: string age: number [grade: number]: Score } let user: User = { name: "xx", age: 30, 1: "A", 2: "B", } index signature를 사용하면 타입 체크 시 유연성이 증가하지만, 해당 객체의 명확한 구..
목차 1. Function 2. Generics (제네릭) 3. 다양한 타입의 객체 4. Function overloading VS Generics 1. Function 함수에 대한 데이터 타입을 지정할 때, 함수의 반환값뿐 아니라, 매개변수에도 데이터 타입이 지정되어 있어야 한다. // 함수 선언식 function add(x: number, y: number): number { return x + y } //함수 표현식 const ad2 = function (x: number, y: number): number { return x + y } //화살표 함수 const add3 = (x: number, y: number): number => x + y 1-1. 매개변수의 여러 타입 한 가지 매개변수에 대..