| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 이벤트
- 알고리즘
- 자바스크립트
- useMemo
- 모던 딥 다이브 자바스크립트
- 프로그래머스
- 개발 공부
- 공식문서
- next.js
- 메가바이트스쿨
- react
- 패스트캠퍼스
- 프론트엔드
- 국비지원교육
- styled-components
- TypeScript
- GIT
- useRef
- 자료구조
- 비전공자
- JavaScript
- MegabyteSchool
- 개발자취업부트캠프
- 리액트
- 모던 자바스크립트 딥 다이브
- 입문
- 코딩테스트
- Github
- 내일배움카드
- CSS
- Today
- Total
개발 기록 남기기✍️
타입스크립트로 블록체인 만들기 (2) 본문
[강의로 이동](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와의 차이점은 해당 타입에 대한 정보를 잃지 않는다.
any는 any로서밖에 알 수 없지만, 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 으로 대체된다.'Front-End > TypeScript' 카테고리의 다른 글
| [TypeScript] 템플릿 리터럴 타입을 키로 갖는 객체 만들기 (1) | 2024.04.18 |
|---|---|
| [TypeScript] Object.keys()의 타입 좁히기 (0) | 2024.04.16 |
| 타입스크립트로 블록체인 만들기 (4) (0) | 2022.12.05 |
| 타입스크립트로 블록체인 만들기 (3) (2) | 2022.12.05 |
| 타입스크립트로 블록체인 만들기 (1) (0) | 2022.12.05 |