TypeScript/TypeScript Basic

TypeScript 함수

${Harvey} 2024. 3. 12. 14:59

 

//아래와같이 매개변수의 타입, 함수의 반환 타입을 입력한다.
function add(num1: number, num2: number): void{

    console.log(num1+num2);
}

function hello(name?: string){  //아래 name에 값이 없으면 "world"를 반환한다고 되어 있지만 name?과 같이 typescript에선 명시적으로 값이 없어도 된다고 알려줘야함.
    return `Hello , ${name || "world"}`;
}

function hello2(name = "world"){ //위와 같음.
    return `Hello , ${name}`;
}

const result = hello();

 

function hello(name: string, age?:number): string { // age?가 name 앞에 오지 않도록 주의.
    if(age !== undefined){
        return `Hello, ${name}. You are ${age}`;
    }else{
        return `Hello, ${name}`;
    }
}

 

function add(...nums:number[]){
    return nums.reduce((result, num) => result + num,0);
}

add(1, 2, 3); //6
add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); //55

 

this

interface User {
    name: string;
}

const Sam: User = {name:'Sam'}

function showName(this:User, age:number,gender:'m'|'f'){ //this의 자료형은 맨 앞에서 지정.
    console.log(this.name)
}

const a = showName.bind(Sam);
a(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 === "number"){
        return {
            name,
            age,
        };
    }else{
        return "나이는 숫자로 입력해주세요.";
    }
}

const sam: User = join("Sam",30);
const jane: string = join("Jane","30");