[Typescript study] 제네릭, 타입단언, TypeAlias와 Interface

Mayton·2022년 8월 2일
0

Javascript & Typescript

목록 보기
5/6

제네릭

프로그램 언어의 다형성은 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 반댓말은 단형성으로, 프로그램 언어의 각 요소가 한가지 형태만 가지는 성질을 가리킨다.

  • 대규모 소프트웨어를 구축할 수 있는 가장 유연한 기능을 제공
  • 와 같은 꺽쇠 괄호를 사용
    • 객체 지향 패러다임의 다형성을 만족시켜 준다.
  1. 함수에서 사용 시
  • function 함수명<타입 변수 지정>(msg: 타입 인자): 타입 변환{}
  1. 클래스에서 사용 시

    	class Animal <T,U>{
    		name:T
    		genterType:U
    
    		constructor(name:T, genderType:U){
    			this.name= name;
    			this.genderType = genderType
    		}
    	}

Assertion

  • typeScript가 알 수 없는 타입에 대한 정보가 있을 때
    - 타입 단언을 사용하여 보다 구체적인 타입을 지정할 수 있다.
  • 하지만 컴팡리 타임에 제거되기 때문에 관련된 런탕미 검사가 없다.
    -즉, 타입 단언이 잘못된 경우 null이나 예외를 발생시키지 않는다.
  • as 혹은 <>구문으로 사용 가능

무조건 좋은 것이아니지만,(any를 사용하는 것과 같을 수 있지만) 꼭 필요한 경우들이 있다.

Type Aliases vs Interfaces

공식문서

  • 각자 다른 개념이지만 비슷한 점도 많고 다른 점도 있어 알아둘 것이 많다.

  • 많이 사용되는 키워드

  • 둘다 많이 사용되면서 또 비슷한 역할을 대체
    하는 경우도 있다.

  • 팀 & 개인의 규칙이나 선호도에 따라 사용이 다르다

  1. interface는 type Alias로 확장할 수 있다.
  • type alias는 extends 키워드를 사용할 수 없다.
  • type alias 확장 시에는 & 연산자를 사용한다.
  1. interface는 중복선언 시에 선언 병합된다.

  2. interface와 type Alias 모두 implements를 사용할 수 있다.

  3. interface는 무조건 key value가 있어야한다.(객체위주로 만들 때 사용하기 좋다.)

profile
개발 취준생

0개의 댓글