함수의 타입
function func(a: number, b: number): number {
return a + b;
}
function func(a: number, b: string){
return a + b;
}
console.log(typeof(func(1,'a'))) // 😀 string
const add = (a: number, b: number): number => a + b;
const add = (a: number, b: number) => a + b;
function profile (name = "한대희") {
console.log(`name : ${name}`);
}
function profile (name = "한대희", age?: number) {
return `name : ${name}, age: ${age}`;
}
console.log(profile ( '한대희', 30 )) // 😀 name : 한대희, age: 30
// 매개변수를 전달하지 않으면 undefined가 된다.
console.log(profile ( '한대희' )) // 😀 name : 한대희, age: undefined
// 😀 인자들을 입력 받아 모두 더해주는 함수가 있다.
function getSum(...rest) {
let sum = 0;
rest.forEach((ele) => (sum += ele));
return sum;
}
// 😀 위의 함수의 매개 변수의 타입을 지정해 줘야 하는데 ...rest는 입력받은 인자들을 배열로 묶어 주기 때문에 배열의 타입을 지정해야 한다.
function getSum(...rest: number[]) {
let sum = 0;
rest.forEach((ele) => (sum += ele));
return sum;
}
console.log(getSum( 1,2,3,4,5)) // 15
함수 타입 표현식(Function Type Expression)
// 😀 매개변수의 타입을 지정하고, 리턴 값의 타입을 => 오른쪽에 지정한다.
type calc = (a: number, b: number) => number;
const add: calc = (a, b) => a + b;
const minus: calc = (a, b) => a - b;
const multiply: calc = (a, b) => a * b;
const divide: calc = (a, b) => a / b;
// 😀 아래와 같은 방식으로 타입을 지정해도 상관 없다.
const add:(a: number, b: number) => number = (a, b) => a + b;
호출 시그니쳐 ( call signature )
// 😀 중괄호를 열고 매개변수 타입을 입력하고 바로 리턴값의 타입을 지정하면 된다.
type calc = {
(a: number, b: number) : number;
}
// 😀 interface를 활용
interface calc {
(a: number, b: number) : number;
}
const add: calc = (a, b) => a + b;
const minus: calc = (a, b) => a - b;
const multiply: calc = (a, b) => a * b;
const divide: calc = (a, b) => a / b;