함수를 선언하는 여러가지 방법
#1
function add(a:number, b:number): number {
return a+b
}
#2
const add = (a:number, b:number) => a+b
#3; call signatures, 함수의 파라미터와 리턴 타입을 명시하는 것
type Add = (a:number, b:number) => number;
const add:Add = (a,b) => a + b
Overloading
- 직접 쓸 일은 많지 않겠지만 외부 패키지나 라이브러리에서는 오버로딩을 많이 사용하기 때문에 알아둘 필요가 있음
- 함수가 서로 다른 여러 개의 call signatures를 가지고 있을 때 발생
type Add = {
(a:number, b:number) : number
(a:number, b:string) : number
}
const add: Add = (a, b) => a + b # error 발생, 타입 스크립트는 b가 number일 수도, string일 수도 있어서 + 를 적용할 수 없다고 띄움
# 타입 체크 해야됨
# string을 보내거나 object를 보내거나
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)
}
}
# 파라미터 개수가 다른 경우
type Add = {
(a:number, b:number) : number
(a:number, b:number, c?:number) : number
}
const add:Add = (a, b, c?:number) => {
return a + b
}
add(1, 2)
add(1, 2, 3)
'Web > TypeScript' 카테고리의 다른 글
[TypeScript] Interfaces (0) | 2024.07.07 |
---|---|
[TypeScript] 객체지향 - Classes (0) | 2024.07.05 |
[TypeScript] 다형성(Polymorphism) (0) | 2024.07.05 |
[TypeScript] 기본 문법 - Type (1) | 2024.07.04 |
[TypeScript] 를 쓰는 이유 (0) | 2024.07.04 |