코드의 재사용성을 늘려주기 위한 도구위 코드의 경우 number라는 타입에 한정되어있다.이를 해결하기위해서는?위처럼 작성할 수 있다. 하지만 이경우에 arg와 return이 다르게 될 수 있다.이를 해결하기위해 제네릭을 사용하게 되면 아래와 같다.위와 같이 작성했을때
제네릭 클래스는 제네릭 인터페이스와 유사한 형태를 가지고있다.위 코드는 꽤 정확한 사용이지만 number타입을 써야만한다는 제약이 없다.그렇기 때문에 아래와 같이 string을 사용 할 수 있다.위 코드 같은 경우 Type이 어떤 type인지 모르기 때문에 arg.le
keyof는 객체타입을 가져오고 string이나 객체 키의 숫자 리터럴 집합을 생산한다. 위의 코드에서 P타입은 "x"|"y" 와 같다.만약 타입이 string이나 number 인덱스를 가지고 있다면 keyof는 이 타입을 반환한다여기서 M의 타입이 string | n
자바스크립트에서 이미 있는 typeof.타입스크립트에서는 이 typeof를 type context에서 사용 할 수 있다.기본타입에서는 유용하진 않지만 다른 type operators와 같이 사용하면 많은 패턴들을 간편하게 쓸 수 있다.타입스크립트는 의도적으로 typeo
indexed access type은 다른 타입의 특정한 프로퍼티를 적용 시키는 타입이다.유니온 타입도 물론 가능하다물론 없는 프로퍼티에 접근하면 에러가 난다.number 를 사용해서 array elements의 타입을 얻을 수 있다.오직 indexing 타입만을 사용
타입을 조건적으로 사용할 수 있다.conditional types는 다음과 같은 조건표현을 가진다
optional이나 readonly와 같은 건 -와 +를 이용하여 수정할 수 있다.타입스크립트 4.1 버전부터 매핑된 타입을 as를 사용하여 리매핑 할 수 있다.
template literal types 는 string literal types를 바틍으로 만들어지고 많은 string 타입들을 유니온으로 확장할 수 있다.자바스크립트의 template literal string 과 똑같지만 type 선언에 쓰인다.유니온도 사용 가능
타입스크립트에서는 타입을 바꾸기위한 다양한 유틸리티 타입들이 존재한다. Partial<Type>은 타입의 모든 프로퍼티를 옵셔널하도록 바꿔준다 이 유틸리티 타입은 Object.freeze에서도 쓰인다. 비슷한 구조로 인덱스 시그니쳐가 있는데 인덱스 시그니쳐
Narrowing 다음과 같은 함수가 있다 padding이 number면 input앞에 공백을 갯수만큼 붙일 것이고 string이면 그냥 input앞에 붙이고 싶다면 아래와 같이 수정한다. 타입스크립트가 자바스크립트에서 type을 안전하게 사용하려고 만든 타입시스
Pick<Type, Keys>은 타입에서 해당 키 property만 빼오는 것이다.Omit<Type, Keys>은 Pick과 정 반대로 타입에서 해당 키 프로퍼티를 제외한 모든것을 뜻한다Exclude<UnionType, ExcludedMembers>는
NonNullable<Type>은 Type에서 null이나 undefined를 제외한 타입을 추출한다. Parameters<Type>은 함수의 파라미터의 타입을 tuple타입으로 추출한다. ConstructorParameters<Type>은 생성