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([1, 2, 3]); // 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(1, 2, 3); // 6으로 평가 | cs |
|
|