function add(num1: number, num2: number): number {
return num1 + num2;
/* console.log(num1 + num2) ==> 함수에 number로 반환값 정의가 있으므로 error 발생
이렇게 쓸 경우 반환 값에 void를 입력해주면 된다.*/
}
function isAdult(age: number): boolean {
return age > 10;
}
- 위에 예시는 일반적인 방법이다.
function hello(name: string) {
return `Hello, ${name || 'world'}`;
}
const result = hello(); // error 발생
- name이 없을 경우 'world'가 출력되게 코드를 작성했지만 typescript에서는 조금 더 명시적으로 알려줘야 한다.
function hello(name?: string) {
return `Hello, ${name || 'world'}`;
}
const result = hello();
- 이렇게 선택적 매개변수를 통해 해결 가능하다.
- undefined나 string인지 확인하게 된다.
function hello(name: string, age?: number) {
if (age !== undefined) {
return `Hello, ${name}, You are ${age}.`;
} else {
return `Hello, ${name}`;
}
}
console.log(hello('Sam', 30));
console.log(hello('Sam'));
- 이렇게 선택적 매개변수는 정의된 매개 변수 뒤로 올 수 있게 해야한다.
- 만약에 앞으로 꺼내고 싶다면
function hello(age: number | undefined, name: string) {
if (age !== undefined) {
return `Hello, ${name}, You are ${age}.`;
} else {
return `Hello, ${name}`;
}
}
console.log(hello(30, 'Sam'));
console.log(hello(undefined, 'Sam'));
- 이렇게 작성해줘야 한다.
function add(...nums: number[]) {
return nums.reduce((result, num) => result + num, 0);
}
add(1, 2, 3);
add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
- 이렇게 ...nums를 하게 될 경우 배열형태를 기입해주면 된다.
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');
- this 타입 또한 정의해줘야 한다.
interface User {
name: string;
age: number;
}
function join(name: string, age: number | string): User | string {
if (typeof age === 'number') {
return {
name,
age,
};
} else {
return '나이는 숫자로 입력해주세요';
}
}
const sam: User = join('Sam', 30); // age에 할당되는 값에 따라 달라지므로 error가 발생한다.
const jane: string = join('Jane', '30');
- 이렇게 될 경우 overload를 이용하여 처리해준다.
interface User {
name: string;
age: number;
}
function join(name:string, age: string): string;
function join(name:string, age: number): number;
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');
'JavaScript Dev. > TypeScript' 카테고리의 다른 글
TypeScript - Generics (0) | 2024.02.27 |
---|---|
TypeScript - 리터럴, 유니온 / 교차 타입 (0) | 2024.02.27 |
TypeScript - 인터페이스(interface) (0) | 2024.02.25 |
TypeScript - 기본 타입 (0) | 2024.02.25 |
TypeScript? (0) | 2024.02.03 |