타입스크립트에서 가장 중요함
자바스크립트에서 함수는 일급 객체다
객체를 다루듯 함수를 변수에 할당하거나,
함수를 다른 함수로 전달하거나,
함수에서 함수를 반환하거나,
객체와 프로토타입에 할당하거나,
함수에 프로퍼티를 기록하거나,
함수에 기록된 프로퍼티를 읽는 등의 작업을 할 수 있다
이 모든 것들을 타입 시스템에 녹여냈다
function add(a: number, b: number) {
return a + b
}
function add(a: number, b: number): number {
return a + b
}
보통 함수의 매개변수의 타입은 명시적으로 정의한다
타입스크립트는 항상 본문에서 사용되는 타입들을 추론하지만
특별한 상황이 아니라면 매개변수 타입은 추론하지 않는다
함수의 반환 타입은 자동으로 추론하지만
명시적으로 적어줄 수 있다
책에서는 대부분의 추론 가능한 타입을 명시적으로 하는 것에 대해 회의적이다
개인적으로는 협업에서 return type을 명시해주는 것은 꽤나 도움이 될 것이라고 생각된다
최소 다섯가지의 함수 선언 방법을 지원한다
function greet(name: string) {
return 'hello' + name
}
const greet2 = function(name: string) {
return 'hello' + name
}
const greet3 = (name: string) => {
return 'hello' + name
}
const = greet4(name: string) => 'hello' + name
const greet5 = new Function('name', 'return "hello" + name')
타입스크립트는 함수 생성자를 제외한 모든 문법을 안전하게 지원하며
모든 문법은 보통 매개변수 타입의 필수 어노테이션, 반환 타입의 선택형 어노테이션에
적용하는 것과 같은 규칙을 따른다
매개변수는 함수 선언의 일부로, 실행에 필요한 데이터를 말하며 정형 매개변수라고도 부른다
인수는 함수 호출 시 전달하는 데이터로, 실질 매개변수로도 부른다
타입스크립트에서 함수를 호출할 때 타입에 대한 정보는 따로 제공하지 않아도 된다
인수를 전달하면 바로 타입 체크를 한다