JS & TS/TypeScript

[TypeScript] Function

Bay Im 2024. 2. 13. 16:43
  • 함수 매개변수
    • 타입 애너테이션으로 함수 매개변수의 타입 선언
      • 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}`);
      }
      
  • 함수 오버로드 (function overloading)
    • 동일한 이름의 매개 변수만 다른 여러 버전의 함수를 만드는 것
  • this
    • this의 타입을 정할 때 함수의 첫번째 매개변수 자리에 this를 쓰고 타입을 입력한다.
      • ex) function 함수명(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