alswlfl
2023. 1. 3. 14:54
함수 형태
function add(num1:number, num2:number){
return num1+num2;
}
function isAdult(age:number):boolean{
return age>10;
}
- 함수의 매개변수도 optional로 지정 가능(단, 타입 명확하게 명시해주어야 함)
function hello(name?:string){
return `Hello, ${name || "world"}`;
}
const result=hello();
const result2=hello("Sam");
//주의점: optional인 매개변수는 뒤에 배치해야 함
function hello2(name:string, age?:number):string{
if(age!==undefined){
return `Hello, ${name}. You are ${age}.`;
}else{
return `Hello, ${name}`;
}
}
//만약 optional을 앞에 배치하고 싶다면
function hello3(age:number | undefined, name:string):string{
if(age!==undefined){
return `Hello, ${name}. You are ${age}.`;
}else{
return `Hello, ${name}`
}
}
- rest파라미터(나머지 매개변수: 개수가 매번 바뀔 수 있음)
- 점 세 개를 사용하면, 전달받은 매개변수를 배열로 나타낼 수 있음(즉, 타입은 배열 형태로)
function add2(...nums:number[]){
return nums.reduce((result,num)=>result+num,0);
}
add2(1,2,3);
add2(1,2,3,4,5,6,7,8,9,10);
- 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 User2{
name2:string;
age2:number;
}
function join(name2: string, age2: string):string;
function join(name2: string, age2: number):User2;
function join(name2:string, age2:number | string):User2 | string{
if(typeof age2==="number"){
return{
name2,
age2,
};
}else{
return "나이는 숫자로 입력해주세요.";
}
}