type Combinable = string | number;
function add(a:Combinable, b:Combinable) {
if (typeof a === 'string' || typeof b === 'string') {
return a.toString() + b.toString();
}
return a + b;
}
const result = add('헬창', '개발자');
result.split(' ');
위 코드의 문제 무엇일까? 바로 사용자는 분면 string 끼리 합쳐서 string과 관련된 메서드를 사용하려 하지만 IDE는 이렇게 인식하고 있기 때문에 string일 수 있고 또 number일 수 있다.
물론 as 키워드를 사용하면 해결되긴 한다. 하지만 add를 사용할 때마다 위 as 키워드를 작성해줘야하는데 function 설정 자체를 하는 방법은 없을까? =>
const result = add('헬창', '개발자') as string;
function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a:Combinable, b:Combinable) {
if (typeof a === 'string' || typeof b === 'string') {
return a.toString() + b.toString();
}
return a + b;
}
const result = add('헬창', '개발자')
result.split(' ');
해당 함수 바로 위에 같은 이름으로 입력값을 때 각각의 type과 return 값일 때 type을 지정해주면 된다.
그러면 아래 파란 글씨로 다른 overload된 함수를 알려주기도 한다.
const fetchedUserData = {
id: 'u1',
name: '정우',
// job: {title: 'CEO', description: 'My onw company'}
};
console.log(fetchedUserData?.job.title);
const userInput = '';
const storedData = userInput || 'Default';
??
를 하용한 이 키워드는 오직 null, undefined일때만 적용한다.