개발 기록 남기기✍️

타입스크립트로 블록체인 만들기 (2) 본문

Front-End/TypeScript

타입스크립트로 블록체인 만들기 (2)

너해동물원 2022. 12. 5. 13:37

[강의로 이동](https://nomadcoders.co/typescript-for-beginners)


Call Signatures

프로퍼티로 호출 가능한 것을 설명하려면 객체 타입에 Call Signature을 작성할 수 있다.

Call Signatures는 다음과 같이 함수의 매개변수와 반환 타입을 type으로 미리 선언한다.

React.js를 사용할 때, props로 함수를 보내게 되면, 어떻게 함수가 작동하는지 타입스크립트한테 설명해줘야 한다.

type Add = {
    (a : number, b: number) : number;
}
// type Add = (a : number, b: number) => number;

const add : Add = (a, b) => a + b;

 

Overloading

Overloading은 직접 작성하기보다 외부 라이브러리에 자주 보이는 형태로, 하나의 함수가 서로 다른 여러 개의 call signatures를 가지고 있을 때 발생한다.

Typescript에서는 overload signatures를 작성하여 다양한 방식으로 호출할 수 있는 함수를 지정할 수 있다.

 

예제) 매개변수의 데이터 타입이 다른 경우 예외 처리

type Add = {
(a: number, b: number): number,
(a: number, b: string): number
}

const add: Add = (a, b) => {
if (typeof b === "string") return a;
return a + b;
}

 

예제) 매개변수의 개수가 다른 경우 예외 처리

type Add = {
    (a : number, b: number) : number;
    (a : number, b: number, c:number) : number;
    // c는 optional이다.
}

const add : Add = (a, b, c?:number) => {
    if(c) return a + b + c;
    return a + b
}

 

Polymorphism(다형성)

다형성이란, 여러 타입을 받아들임으로써 여러 형태를 가지는 것을 의미한다.

 

Generic

generic은 선언 시점이 아니라 생성 시점에 타입을 명시하여 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법이다.

(구체적인 타입을 지정하지 않고 다양한 인수와 리턴 값에 대한 타입을 처리할 수 있다.)

 

타입스크립트에서 generic을 통해 인터페이스, 함수 등의 재사용성을 높일 수 있다.

placeholder는 call signature를 요구하는 대로 생성한다.

any와의 차이점은 해당 타입에 대한 정보를 잃지 않는다.

anyany로서밖에 알 수 없지만, generics는 타입 정보를 알 수 있고, 정보를 다른 쪽으로 전달할 수 있다.

 

type SuperPrint = {
    <T>(arr : T[]) => T
}

const superPrint : SuperPrint = (arr) => arr[0];


const a = superPrint([1,2,3,4]);
// a에서 T는 number로 대체된다.
const b = superPrint([true, false, true]);
// b에서 T는 boolean으로 대체된다.
const c = superPrint(["a","b","c"]);
// c에서 T는 string으로 대체된다.
const d = superPrint([1,2,true,false]);
// d에서 T는 number | boolean 으로 대체된다.