- 함수 매개변수
- 타입 애너테이션으로 함수 매개변수의 타입 선언
- ex)
function add(a, b) { return a + b; } // 아래 같이 변경 function add(a : number, b: number) { return a + b; }
- 타입스크립트는 함수에 선언된 모든 매개변수가 필수라고 가정한다.
- 타입 애너테이션으로 함수 매개변수의 타입 선언
- 선택적 매개변수
- 타입 애너테이션의 : 앞에 ?를 추가해서 매개변수가 선택적이라고 표시
- ex)
const introduce = (name:string, **height?:number**) => { console.log(`이름 : ${name}`); if(typeof height === 'number'){ // 내로잉을 통해서 타입 좁혀줌 console.log(`키 : ${height + 10}`) } } introduce("김현준"); // OK introduce("김현준", undefined); // OK introduce("김현준", 170); // OK
- 매개변수의 타입도 선택적으로 가능
- ex)
const introduce2 = (name:string, **height : number|undefined** ) => { console.log(`이름 : ${name}`); if(typeof height === 'number'){ console.log(`키 : ${height + 10}`) } } introduce2("김현준"); // Error : Expected 2 arguments, but got 1. introduce2("김현준", undefined); // OK introduce2("김현준", 170); // OK
- 타입 애너테이션의 : 앞에 ?를 추가해서 매개변수가 선택적이라고 표시
- 기본 매개변수
- 기본 매개변수는 기본적으로 값이 제공되기 때문에 TS 타입에는 암묵적으로 함수 내부에 | undefined 유니언 타입이 추가된다.
- TS는 함수의 매개변수에 대해 인수를 누락하거나 undefined 인수를 사용하여 호출하는 것을 허용한다.
- never 반환 타입
- never 반환 함수는 의도적으로 항상 오류를 발생시키거나 무한 루프를 실행하는 함수
- ex)
function fail(message : string) : **never** { throw new Error(`Invariant Failure : ${message}`); }
- never 반환 함수는 의도적으로 항상 오류를 발생시키거나 무한 루프를 실행하는 함수
- 함수 오버로드 (function overloading)
- 동일한 이름의 매개 변수만 다른 여러 버전의 함수를 만드는 것
- this
- this의 타입을 정할 때 함수의 첫번째 매개변수 자리에 this를 쓰고 타입을 입력한다.
- ex) function 함수명(this: 타입) { …}
- 하지만 실제로 인자값을 받는 매개변수는 this: 타입을 제외한 나머지이므로 헷갈리면 안된다.
- this의 타입을 정할 때 함수의 첫번째 매개변수 자리에 this를 쓰고 타입을 입력한다.
728x90
'JS & TS > TypeScript' 카테고리의 다른 글
[TypeScript] Interface (0) | 2024.02.13 |
---|---|
[TypeScript] Array, Tuple (0) | 2024.02.13 |
[TypeScript] Object (0) | 2024.02.13 |
[TypeScript] Union, Literal (0) | 2024.02.13 |
[TypeScript] Type System (0) | 2024.02.13 |