// 인덱스 타입
interface ErrorContainer {
// { email: 'Not a valid email', username: 'Must start with a character!' }
[prop: string]: string; // 속성이 문자열이고, 속성의 값도 문자열이다.
}
const errorBag: ErrorContainer = {
email: 'Not a valid email!',
username: 'Must start with a capital character!'
};
// 함수 오버로드
type Combinable = string | number;
type Numeric = number | boolean;
type Universal = Combinable & Numeric; // 교차 타입
// 둘다 숫자라면 숫자를 반환
function add(a: number, b: number): number; // 함수 오버로드
function add(a: string, b: string): string; // 함수 오버로드
function add(a: number, b: string): string; // 함수 오버로드
function add(a: string, b: number): 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(1, 5);
console.log(result);
// 타입 변환을 통해 오류 해결 as string;
// 함수 오버로드를 통해 오류 해결
const result2 = add('Max', 'Schwarz')
console.log(result2.split(' '));