시그니처를 먼저 읽기
function add(x: number, y: number): number
함수 이름보다 중요한 부분은 괄호 안의 매개변수 목록과 괄호 뒤의 반환 타입이다.
선언 함수, 함수 표현식, 화살표 함수는 모두 같은 기준으로 읽힌다. 매개변수의 자리와 반환 타입을 계약으로 잡고, 선택 여부와 별칭은 그 계약을 더 잘 쓰기 위한 장치다.
function add(x: number, y: number): number
함수 이름보다 중요한 부분은 괄호 안의 매개변수 목록과 괄호 뒤의 반환 타입이다.
type AddFunction =
(a: number, b: number) => number
같은 입력과 출력을 가진 함수는 별칭으로 묶어 변수, 콜백, 반환값 위치에 반복 적용할 수 있다.
누락되면 호출 단계에서 오류가 나며, 내부 로직은 값이 있다고 믿는다.
이름 뒤 `?`가 붙으면 함수 내부에서 존재 여부를 확인해야 한다.
인자가 없거나 undefined이면 지정된 값으로 런타임 동작을 안정화한다.
`...numbers: number[]`처럼 여러 인자를 하나의 배열 타입으로 모은다.
`): number`로 선언한 함수가 문자열을 반환하면 호출하기 전 컴파일 단계에서 멈춘다.
로그 출력, 화면 갱신처럼 돌려줄 값이 없는 함수는 `void`를 써서 호출자가 결과값을 기대하지 않게 만든다.
함수 타입 별칭은 함수 자체의 모양을 이름으로 저장한다. 구현 방식이 달라도 같은 계약을 만족하는지 한 번에 확인할 수 있다.
계산 함수 교체 가능
콜백의 입력과 출력 고정
함수를 만들어 돌려줄 때도 계약 유지