function hello(age?: number, name: string): string {
if (age !== undefined) {
return `Hello, ${name}. You are ${age}.`;
} else {
return `Hello, ${name}`;
}
}
위처럼 필수 매개변수보다 선택적 매개변수가 앞에 오면 오류가 난다.
그래도 정 쓰고 싶다면 아래처럼 쓰면 된다.
function hello(age: number | undefined, name: string): string {
if (age !== undefined) {
return `Hello, ${name}. You are ${age}.`;
} else {
return `Hello, ${name}`;
}
}
function add(...nums: number[]) {
return nums.reduce((result, num) => result + num, 0);
}
배열 형태로 기입한다.
interface User {
name: string;
age: number;
}
function join(name: string, age: string): string;
function join(name: string, age: number): User;
function join(name: string, age: number | string): User | string {
if (typeof age === "number") {
return {
namge,
age,
};
} else {
return "나이는 숫자로 입력해주세요.";
}
}
const sam: User = join("Sam", 30);
const jane: string = join("Jane", "30");
매개 변수의 타입이나 개수에 따라 다르게 동작할 경우 함수 오버로드를 사용해야한다.
interface User {
name: string;
}
const Sam: User = { name: "Sam" };
function showName(this: User, age: number, gender: "m" | "f") {
console.log(this.name, age, gender);
}
const a = showName.bind(Sam);
a(30, "m");