Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 정렬
- 자료구조
- JavaScript
- mongoose
- Express
- nestjs
- 게임
- Queue
- AWS
- MySQL
- game
- GIT
- Dinosaur
- react
- jest
- MongoDB
- typeORM
- Nest.js
- cookie
- Sequelize
- nodejs
- class
- OCR
- dfs
- Bull
- flask
- 공룡게임
- TypeScript
- Python
Archives
- Today
- Total
포시코딩
[TypeScript][노마드코더] #3 FUNCTIONS(1) 본문
728x90
Call Signature
type Add = (a: number, b: number) => number;
const add:Add = (a, b) => a + b;
먼저 함수의 타입을 설명하고 나서 코드를 구현하는 방법
Overloading(오버로딩)
오버로딩은 함수가 여러 개의 call signature를 가지고 있을 때 발생시킨다.
그냥 여러 개가 아닌 서로 다른 여러 개의 call signature을 가졌을 때!
type Add = {
(a: number, b: number) => number
(a: number, b: string) => number
}
const add:Add = (a, b) => a + b; // Error! b가 number or string이라 string과 number를 더할 수 없다.
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
}
react의 Next에서의 실제 예시)
Router.push('/home')
Router.push({
path: '/home',
state: 1
})
String으로 보낼 수도 있고, Object로도 보낼 수 있다.
위와 같은 상황일 때를 TypeScript로 나타내면 다음과 같다.
type Config = {
path: string,
state: object
}
type Push = {
(path: string): void
(config: Config): void
}
const push: Push = (config) => {
if (typeof config === 'string') {
console.log(config)
} else {
console.log(config.path, config.state)
}
}
parameter 개수가 다른 경우
type Add = {
(a: number, b: number): number
(a: number, b: number, c: number): number // c는 옵션인 경우
}
const add: Add = (a, b, c) => { // Error!
return a + b
}
const add: Add = (a, b, c?: number) => { // c는 아마 number일 것이다 라는걸 알려줘야 한다.
if (c) return a + b + c
return a + b
}
add(1, 2)
add(1, 2, 3)
다른 개수의 파라미터라 에러 발생하는데 c를 옵션으로 지정해서
위와 같은 방식으로 표현한다면 해결된다.
728x90
'JavaScript' 카테고리의 다른 글
[TypeScript][노마드코더] #4 CLASSES AND INTERFACES(1) (0) | 2023.01.20 |
---|---|
[TypeScript][노마드코더] #3 FUNCTIONS(2) (0) | 2023.01.17 |
[TypeScript] cannot find name 'console' error 해결방법 (0) | 2023.01.17 |
[TypeScript][노마드코더] #2 OVERVIEW OF TYPESCRIPT 정리(2) (0) | 2023.01.17 |
[TypeScript][노마드코더] #2 OVERVIEW OF TYPESCRIPT 정리(1) (0) | 2023.01.17 |