// 함수에서도 선택적 매개변수를 사용할 수 있다.
function hello(name?: string) {
return `Hello, ${name || "world"}`;
}
const result = hello();
const result = hello("Sam");
자바스크립트에서는 아래와 같이 변수에 기본 값을 줄 수 있다.
function hello(name = "Min Ji") {
return `Hello, ${name}`;
}
매개변수를 여러개 사용할 때, 필수 매개변수는 선택적 매개변수보다 앞에 위치해야한다.
function hello(name:string, age?:number):string {
if (age !== undefined) {
return `Hello ${name}. You are ${age}`;
} else {
return `Hello, ${name}`;
}
}
만약 선택적 매개변수인 age를 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);
}
add(1, 2, 3); // 6
타입스크립트에서 this의 타입을 정의하는 방법
interface User {
name: string;
}
const Sam: User = {name: 'Sam'}
function showName(this:User) {
console.log(this.name)
}
const a = showName.bind(Sam);
a();
함수 오버로드 - 전달 받은 매개변수나 타입에 따라 다른 동작을 하는 것을 의미
interface User {
name: string;
age: number;
}
/// 함수 오버로드
function join(name:string, age:number) : User;
function join(name:string, age:string) : string;
function join(name:string, age:number | string): User | string {
if (typeof age === "number") {
return {
name,
age,
};
} else {
return "나이는 숫자로 입력해주세요.";
}
}