내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-09-01 07:39

제목

[TypeScript] 함수 정의 / 선택적 매개변수 / 나머지 매개변수


07. 함수 정의
// 이름을 붙인 함수
function greet(name: string) {
    return 'hello' + name;
}
 
// 함수 표현식
let greet2 = function (name: string) {
    return 'hello' + name;
}
 
// 화살표 함수 표현식
let greet3 = (name: string) => {
    return 'hello' + name;
}
 
// 단축형 화살표 함수 표현식
let greet4 = (name: string) =>
    'hello' + name;
 
// 함수 생성자
// 안전하지 않은 문법
// 함수 생성자는 타입이 Function으로 Function.prototype의 모든 프로토타입 메서드를 포함한다.
// 하지만 매개변수 타입과 반환 타입을 지정하지 않았으므로 어떤 인수가 전달해도 호출활 수 있으며, 이 과정에서 어떤 문제가 발생할지 예측할 수 없다.
let greet5 = new Function('name''return "Hello" + name');
cs


08. 선택적 매개변수
function log(message: string, userId?: string) {
    let time = new Date().toLocaleTimeString();
    console.log(time, message, userId || 'Not signed in');
}
log('Page loaded');
log('Page loaded''da763br');
cs


09. 나머지 매개변수

인수를 여러개 받을때 다음 처럼 배열 형태로 받을 수 있다.

function sum(numbers: number[]) {
    return numbers.reduce((total, n) => total + n, 0)
}
sum([123]);  // 6으로 평가
cs

arguments 키워드로 동일하게 여러개의 인수를 받는 파라메터를 정의할 수 도 있다.

function sumVariadic() {
    return Array
        .from(arguments)
        .reduce((total, n) => total + n, 0);
}
cs

 하지만 arguments는 전혀 안전하지 않은 방법이다.
 매개변수를 any타입으로 추론하기 때문에 잘못된 타입을 전달 받았을 경우 이후 문제 발생을 예측할 수 없다.
 따라서 arguments 대신 나머지 매개변수 형식으로 사용하는 것이 좋다.


나머지 매개변수 형식으로 여러개의 인수를 받는 파라메터 정의

function sumVariadicSafe(...numbers: number[]) {
    return numbers.reduce((total, n) => total + n, 0)
}
sumVariadicSafe(123);  // 6으로 평가
cs



출처1

출처2