타입스크립트로 함수를 정의할 때는 크게 3가지 타입을 정의할 수 있습니다.
- 함수의 파라미터(매개변수) 타입
- 함수의 반환 타입
- 함수의 구조 타입
1. 함수 타입 선언
function sum(a: number, b: number): number {
return a + b;
}
함수의 리턴 값에 타입을 정하지 않을 때 void 사용
function sum(x :number) :void {
// 아무런 값을 리턴하고 싶지 않을 때 사용
}
2. 함수 인자
- 함수의 파라미터가 옵션일 경우
function sum(a: number, b?: number): number {
return a + b;
}
- 함수의 파라미터 초기화
function sum(a: number, b = '100'): number {
return a + b;
}
- 함수의 파라미터에 rest문법 적용
function sum(a: number, ...nums:number[]): number {
const total = 0;
for(let numbers of nums){
total += numbers
}
return a + total;
}
3. 함수 타입 확정하기
함수의 파라미터에서 사용할 수 없는 것들
// 파라미터의 값이 union 타입일 경우
function count(x :number | string){
return x + 1;
}
// 파라미터가 옵셔널 체이닝일 경우
function count(x? :number) :number {
return x * 2
}
이럴 경우에는 변수가 애매하다고 판단하여 오류가 발생된다. Narrowing 이나 Assertion으로 타입을 확정해주면 된다.
Narrowing
: if문 등으로 타입을 하나로 정해주는 것을 뜻합니다.
function count(x :number | string){
if (typeof x === 'number') {
return x + 1
}
else if (typeof x === 'string') {
return x + 1
}
else {
return 0
}
}
// Narrowing에 사용할 수 있는 문법
// typeof변수
// 속성명 in 오브젝트
// 인스턴스 instanceof 부모
Assertion
: 파라미터의 타입을 강제로 지정해주는 것을 뜻합니다. union type일 경우 하나의 정확한 타입으로 정해주는 역할입니다.
function count(x :number | string){
return (x as number) + 1
}
'Typescript' 카테고리의 다른 글
[TypeScript] 타입스크립트 기본 타입 (0) | 2023.05.23 |
---|