728x90
# interface optional 속성
- interface에서 optional 속성은 뒤에 물음표를 붙인다. (price?)
- 타입으로 인터페이스를 설정했을 때, 선택적 속성은 없어도 오류가 발생하지 않는다.
- 해당 속성에는 undefined가 할당된다.
interface CraftBeer {
readonly name: string
price?: number
exist: boolean
}
let myBeer:CraftBeer = {
name: 'hogarden',
exist: true,
}
function callBeer(beer:CraftBeer){
console.log(beer.name)
console.log(beer.exist)
console.log(beer.price)
}
callBeer(myBeer)
# 매개변수 타입과 기본값
- b의 기본값이 100, 즉 number이므로 타입도 number로 추론된다.
- 두 번째 매개변수가 없거나, undefined일 때는 기본값이 적용된다.
function sum(a: number, b=100):number{
return a + b
}
console.log(sum(10,20));
console.log(sum(10, undefined))
console.log(sum(10));
# 함수의 오버로드와 매개변수
- 오버로딩의 순서는 다음과 같다
- 매개변수 1개인 경우를 정의한다.
- 매개변수 3개인 경우를 정의한다.
- 매개변수 1개와 옵셔널 매개변수 2개를 정의한다.
- 3개인 경우의 수를 분기해주고(narrowing) 3개의 매개변수를 넣고, 아닌 경우에는 1개의 매개변수가 동작하도록 한다.
function makeDate(timestamp: number):Date;
function makeDate(m: number, d:number, y:number): Date;
function makeDate(mOrTime: number, d?:number, y?:number):Date{
if(d!==undefined && y!==undefined){
return new Date(y, mOrTime, d)
} else{
return new Date(mOrTime)
}
}
const d1 = makeDate(12345678);
const d2 = makeDate(5, 5, 5);
const d3 = makeDate(1, 3); // error
* 오버로딩이 없고, 옵셔널 매개변수만 줘도 되지 않는가?
가능하다.
다만 타입스크립트가 매개변수의 개수(1개, 3개가 아니라 2개일 때 등)를 판단하여 오류를 띄워주지 않는다.
'Language > TypeScript' 카테고리의 다른 글
타입스크립트 클래스 알아보기 (0) | 2024.09.07 |
---|---|
typeORM으로 mysql 사용 시, JSON 타입 컬럼의 내부 데이터 활용하기 (0) | 2023.04.23 |
[TS] 클래스 속성과 접근제어자 (0) | 2022.11.05 |
class 인스턴스 argument 사용/ optional 다루기/ union 타입/ interface 상속 (0) | 2022.10.21 |