// 함수
function add(num1: number, num2: number): number{
return num1 + num2;
}
function add(num1: number, num2: number): void{
console.log(num1 + num2);
}
function isAdult(age: number): boolean{
return age > 19;
}
// 함수의 반환 값에 타입을 정하지 않을 때는 void라도 사용
매개변수와 함수의 반환값에 타입 추가
function add(num1: number, num2: number): number{
return num1 + num2;
}
add(10,20) // 30
add(10,20,30) // error
add(10) // eeror
타입스크립트에서는 함수의 인자를 모두 필수 값으로 간주한다.
따라서, 함수의 매개변수를 설정하면 undefined 나 null 이라도 인자를 넘겨야 한다. 이는 정의된 매개변수 값만 받을 수 있고 추가로 인자를 받을 수 없다는 의미이다.
function add(num1: number, num2?: number): number{
return num1 + num2;
}
add(10,20) // 30
add(10,20,30) // error
add(10) // 10
정의된 매개변수의 갯수만큼 인자를 넘기지 않아도 되는 특성을 이용하고싶다고 하면 ‘?’ 를 사용하면 된다.
function add(num1: number, num2 = '50'): number{
return num1 + num2;
}
add(10,20) // 30
add(10,20,30) // error
add(10) // 60
add(10,undefined) // 60
매개변수 초기화는 ES6 문법과 동일하다. num2의 인자값이 없거나 undefined가 전달되면 기본값으로 초기화하여 결과값이 반환된다.
// 나머지 매개변수 rest parameters
function sum(...nums: number[]) { //number[] 타입 지정
return nums.reduce((result, num) => result + num, 0);
}
sum(1, 2, 3); // 6
sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // 55
////////////////////////////////////////////////////////////
function sum(a:number, ...nums: number[]) {
let totalOfNums = 0;
for (let key in nums){
totalOfNums += nums[key]
}
return a + totalOfNums;
}
// this , bind
interface User {
name : string;
}
const Sam: User = {
name : "Sam";
}
function showName(this: User){
console.log(this.name);
}
const a = showName.bind(Sam);
a(); // "Sam"
// 매개변수가 있을 때
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"); // "Sam", 30, "m"
// 오버로드
// 동일한 함수지만 매개변수의 타입이나 갯수에 따라 다른방식으로 동작해야될때 사용
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 === "nember") {
return{
name,
age,
};
}
else {
return "나이는 숫자로 입력해주세요";
}
}
const sam: User = join("Sam", 30);
const jane: string = join("Jane", "30");