๐ ์ฝ๋ฉ์๋ง์
TypeScript ๊ฐ์ข
์๊ฐ ํ, ์ดํดํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
ํ๋ผ๋ฏธํฐ์ ๋ฆฌํด๊ฐ์ ํ์ ์ ์ง์ ํด ์ค๋ค.
function add(num1: number, num2: number): void {
console.log(num1 + num2);
}
1.ํ์
?
๋ฅผ ์ฌ์ฉํ๋ค.
function hellow(name?: string) {
return `Hello, ${name || "world"}`;
}
const result = hello();
์์ ์ฝ๋๋ ์๋ ์ฝ๋์ ๊ฐ์ด ํ๋ผ๋ฏธํฐ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ๊ฒ๊ณผ ๊ฐ๋ค.
function hello(name = "world") {
return `Hello, ${name}`;
}
const result = hello();
2.์์
optional์ธ ํ๋ผ๋ฏธํฐ๋ ๋งจ ๋ค์ ์์ฑํ๋ค.
function hello(name: string, age?: number): string {
if(age !== undefined) {
return `Hello, ${name}. You are ${age}.`;
} else {
return `Hello, ${name}`;
}
}
console.log(hello("Sam"));
๋ง์ฝ ์์ ์์ฑํ๊ณ ์ถ๋ค๋ฉด ์๋ ์ฝ๋์ฒ๋ผ undefined๋ก ์ฑ์์ค๋ค.
function hello(age: number | undefined, name: string): string {
if(age !== undefined) {
return `Hello, ${name}. You are ${age}.`;
} else {
return `Hello, ${name}`;
}
}
console.log(hello(undefined, "Sam"));
ํ๋ผ๋ฏธํฐ ํ์ ์ ๋ฐฐ์ด๋ก ์ง์ ํ๋ค.
function add(...nums: number[]) {
return nums.reduce((result, num) => result + num, 0);
}
ํ๋ผ๋ฏธํฐ ์ด์ ์ this์ ํ์ ์ ์์ฑํ๋ค.
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();
Function Overloads๋ฅผ ์ฌ์ฉํ๋ค. overload signature๋ฅผ ์์ฑ ํ ํจ์ ๋ณธ๋ฌธ์ ์์ฑํด ์ค๋ค.
์ผ๋ถ JavaScript ํจ์๋ ๋ค์ํ ์ธ์ ์์ ์ ํ์ผ๋ก ํธ์ถํ ์ ์์ต๋๋ค.
...์๋ต...
ํ์ ์คํฌ๋ฆฝํธ์์๋ overload signature๋ฅผ ์์ฑํ์ฌ ๋ค์ํ ๋ฐฉ์์ผ๋ก ํธ์ถํ ์ ์๋ ํจ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ช ๊ฐ์ overload signature(๋ณดํต 2๊ฐ ์ด์)๋ฅผ ์์ฑํ ๋ค์ ํจ์ ๋ณธ๋ฌธ์ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
๐https://www.typescriptlang.org/docs/handbook/2/functions.html#function-overloads
์๋์ ์ฝ๋๋ age์ ํ์ ์ ๋ฐ๋ผ ๋ฆฌํด๊ฐ์ ํ์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์ด๋ค.
interface User {
name: string;
age: number;
}
// overload signature
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 {name, age};
} else {
return "๋์ด๋ ์ซ์๋ก ์
๋ ฅํด ์ฃผ์ธ์.";
}
}
const sam: User = join("Sam", 30);
const jane: string = join("Jane", "30");