
js모듈을 TS에서 사용할 경우의 예시!
src/common.js
const heropy = {
name: 'Heropy',
age: 85
}
module.exports = {
heropy
}
src/common.d.ts
interface User {
name: string
age: number
}
declare const heropy: User
export {
heropy
}
src/main.ts
// compilerOptions.esModuleInterop = false
import * as commonjs from './common'
// compilerOptions.esModuleInterop = true
import commonjs from './common'
console.log(commonjs.heropy)
타입스크립트에서 제공하는 여러 전역 유틸리티 타입이 있다.
타입 변수
T는 타입,U는 또 다른 타입,K는 속성을 의미하는 약어이다.
이해를 돕기 위해 타입 변수를T는TYPE또는TYPE1,U는TYPE2,K는KEY로 명시한다.
| 유틸리티 이름 | 설명 (대표 타입) | 타입 변수 |
|---|---|---|
Partial | TYPE의 모든 속성을 선택적으로 변경한 새로운 타입 반환 (인터페이스) | <TYPE> |
Required | TYPE의 모든 속성을 필수로 변경한 새로운 타입 반환 (인터페이스) | <TYPE> |
Readonly | TYPE의 모든 속성을 읽기 전용으로 변경한 새로운 타입 반환 (인터페이스) | <TYPE> |
ReadonlyArray | <TYPE> | |
Record | KEY를 속성으로, TYPE를 그 속성값의 타입으로 지정하는 새로운 타입 반환 (인터페이스) | <KEY, TYPE> |
Pick | TYPE에서 KEY로 속성을 선택한 새로운 타입 반환 (인터페이스) | <TYPE, KEY> |
Omit | TYPE에서 KEY로 속성을 생략하고 나머지를 선택한 새로운 타입 반환 (인터페이스) | <TYPE, KEY> |
Exclude | TYPE1에서 TYPE2를 제외한 새로운 타입 반환 (유니언) | <TYPE1, TYPE2> |
Extract | TYPE1에서 TYPE2를 추출한 새로운 타입 반환 (유니언) | <TYPE1, TYPE2> |
NonNullable | TYPE에서 null과 undefined를 제외한 새로운 타입 반환 (유니언) | <TYPE> |
Parameters | TYPE의 매개변수 타입을 새로운 튜플 타입으로 반환 (함수, 튜플) | <TYPE> |
ConstructorParameters | TYPE의 매개변수 타입을 새로운 튜플 타입으로 반환 (클래스, 튜플) | <TYPE> |
ReturnType | TYPE의 반환 타입을 새로운 타입으로 반환 (함수) | <TYPE> |
InstanceType | TYPE의 인스턴스 타입을 반환 (클래스) | <TYPE> |
ThisParameterType | TYPE의 명시적 this 매개변수 타입을 새로운 타입으로 반환 (함수) | <TYPE> |
OmitThisParameter | TYPE의 명시적 this 매개변수를 제거한 새로운 타입을 반환 (함수) | <TYPE> |
ThisType | TYPE의 this 컨텍스트(Context)를 명시, 별도 반환 없음! (인터페이스) | <TYPE> |