-
함수 매개변수
- 타입스크립트는 인수의 개수를 계산함 -> 가끔 코드에서 함수 호출시 뜨는 에러들!
-
선택적 매개변수
- ? 연산자를 사용, 객체 리터럴과 마찬가지로 ?와 undefined를 포함한 유니온 타입은 다른 거임.
- 암묵적으로 undefined 타입이 될 수 있기 때문에 타입 가드 반드시 필요
- 함수에서 사용되는 모든 선택적 매개변수는 마지막 매개변수여야 함. -> 그렇지 않으면 구문 오류 발생
-
기본 매개변수
- 자바스크립트처럼 디폴트 값을 설정할 수 있음.
- 타입이 없고 디폴트 값만 있으면 디폴트 값의 타입으로 매개변수 타입을 유추함.
-
나머지 매개변수
-
배열로 표현함.
function singAllTheSong(singer : string, ...songs : string[]){...}
-
singAllTheSong('name', 'song1','song2','song3')
-
반환 타입
-
명시적으로 반환타입을 선언하는 것이 좋은 경우
- 함수가 항상 동일한 타입의 값을 반환하도록 강제
- 재귀 함수의 반환 타입을 통해 타입을 유추하는 것을 거부 ->?
- 매우 큰 프로젝트에서 타입스크립트 타입 검사 속도를 높일 수 있음.
-
반환 타입 명시 위치
- 매개변수 괄호 뒤 -> function name() : string {...}
-
-
함수 타입
- 함수의 타입을 선언
- 코틀린에서 람다 함수 타입 정한거랑 비슷
- 함수의 타입도 별칭으로 사용할 수 있음. -> 타입 별칭을 이용하면 반복적으로 작성하는 매개변수와 반환 타입을 갖는 코드 공간을 많이 절약할 수 있음.
-
void 와 never
-
void
- 어떤 값도 반환하지 않음.
- 자바스크립트 함수는 실제 값이 반환되지 않으면 기본으로 모두 undefined를 반환함.
- undefined !== void -> void는 타입이 무시 된다는 것을 의미. undefined는 반환되는 리터럴 값
-
never
- never 반환 함수는 (의도적으로 )함상 오류를 발생시키거나 무한 루프를 실행하는 험수
- 함수가 절대 반환하지 않도록 의도하려면 명시적으로 :never 타입 추가 -> composite 패턴에 써먹어야 겠다!
-
-
함수 오버로드
-
오버로드와 오버 라이드 차이
- 오버로드 : 함수의 이름만 같고 매개 변수의 수, 타입, 반환 타입이 모두 다른 여러 버전의 함수를 정의
- 오버 라이드 : 시그니처가 같지만 구현이 다른 함수를 정의
-
타입 스크립트에서 오버로드
- function 키워드로만 오버로딩할 수 있음. 화살표 함수는 불가
-
함수 오버로딩을 위해 해야 하는 것
- 선언 : 함수가 어떤 파라미터 타입을 다룰 것인지 선언
- 구현 : 각 파라미터 타입에 대응하는 구체적인 코드를 작성
- 여러 버전의 선언과 하나의 구현 시그니처를 갖는다.
-
주의
- 함수의 이름은 같아야 한다.
- 매개변수의 순서를 지켜야 한다.
-