Default Parameters

kukudas·2022년 2월 7일
0

TypeScript

목록 보기
14/39

Introduction to TypeScript default parameters

자바스크립트는 아래의 syntax로 default parameter를 지원함.

function name(parameter1=defaultValue1,...) {
   // do something
}

위와 같은 syntax에서 인자를 넘겨지주지 않거나 undefined를 넘겨주게 되면 함수가 default값을 사용해서 해당 인자를 초기화함.

function applyDiscount(price, discount = 0.05) {
    return price * (1 - discount);
}

console.log(applyDiscount(100)); // 95

타입스크립트도 자바스크립트랑 같은 syntax를 사용할 수 있음.

function name(parameter1:type=defaultvalue1, parameter2:type=defaultvalue2,...) {
   //
}

아래 코드는 타입스크리트에서 default parameter를 사용하는 것임.

function applyDiscount(price: number, discount: number = 0.05): number {
    return price * (1 - discount);
}

console.log(applyDiscount(100)); // 95

function type에는 default parameter를 넣을 수 없음.
아래 코드는 에러나옴.

let promotion: (price: number, discount: number = 0.05) => number;

Default parameters and Optional parameters

default parameter와 optional parameter는 같은 type임.

function applyDiscount(price: number, discount: number = 0.05): number {
  // ...
}
function applyDiscount(price: number, discount?: number): number {
  // ...
}

위 2개는 아래와 같음.

(price: number, discount?: number) => number

optional parameter는 일반적인 parameter의 뒤에 나와야하지만 default parameter는 그런 제약이 없음.

default parameter가 일반적인 parameter보다 앞에 나올 경우에 default로 초기화된 값을 사용하려면 인자로undefined를 넘겨주면됨.

아래 코드는 특정 년월의 일수를 리턴해줌.
여기서 year에 아무 값을 넘겨주지 않으면 현재 연도가 됨.

function getDay(year: number = new Date().getFullYear(), month: number): number {
    let day = 0;
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day = 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            day = 30;
            break;
        case 2:
            // leap year
            if (((year % 4 == 0) &&
                !(year % 100 == 0))
                || (year % 400 == 0))
                day = 29;
            else
                day = 28;
            break;
        default:
            throw Error('Invalid month');
    }
    return day;
}

아래는 2019년 2월의 날짜수를 가져옴.

let day = getDay(2019, 2);
console.log(day); // 28

올해 2월의 날짜수를 가져옴.

let day = getDay(undefined, 2);
console.log(day);
  • parameter:=defaultValue로 default parameter의 값을 초기화 할때 사용함.
  • default paramter는 옵션임
  • default로 초기화된 parameter를 사용하려면 함수를 부를 때 인자를 빼먹거나 undefined로 부르면됨

출처

0개의 댓글

관련 채용 정보