[TypeScript] 엄격한 타입 검사, 고급 컴파일러 옵션Language/TypeScript2024. 5. 10. 14:10
Table of Contents
반응형
타입스크립트의 강점은 표현력이 풍부한 구문뿐만 아니라 강력한 타입 검사 및 컴파일 옵션에도 있습니다. 이번 글에서는 엄격한 타입 검사 및 고급 컴파일러 옵션에 대해 집중적으로 살펴봅니다. 이러한 기능은 코드 품질을 높이고, 잠재적인 오류를 조기에 발견하며, 컴파일 프로세스를 미세 조정하는 데 도움이 됩니다. 타입 안전성을 보장하고 TypeScript 워크플로를 최적화하는 미묘한 차이를 알아보는 여정에 함께하세요.
엄격한 타입 검사(Strict Type Checking)
엄격한 타입 검사를 사용하려면 컴파일 시 일반적인 프로그래밍 오류를 포착하는 데 도움이 되는 여러 가지 TypeScript 컴파일러 옵션을 사용 설정해야 합니다. 엄격한 타입 검사를 사용하려면 몇 가지 하위 옵션이 포함된 --strict
플래그를 사용하면 됩니다.
--strictNullChecks
: 변수의 타입에서 명시적으로 허용하지 않는 한 변수가 null 또는 정의되지 않은 상태로 할당되지 않도록 합니다.--strictFunctionTypes
: 함수 매개변수 타입과 반환 타입을 보다 엄격하게 검사합니다.--strictPropertyInitialization
: 모든 클래스 프로퍼티가 생성자에서 초기화되도록 합니다.--strictBindCallApply
: 함수의 바인드, 호출 및 적용 메서드를 더 엄격하게 검사합니다.
이러한 옵션을 활성화하려면 다음 컴파일러 명령을 사용하면 됩니다.
tsc --strict tsfile.ts
또는 tsconfig.json
에서 설정할 수 있습니다.
{
"compilerOptions": {
"strict": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"strictPropertyInitialization": true,
"strictBindCallApply": true
}
}
고급 컴파일러 옵션(Advanced Compiler Option)
엄격한 타입 검사 외에도 TypeScript는 컴파일러의 동작을 미세 조정할 수 있는 다양한 고급 컴파일러 옵션을 제공합니다. 주목할 만한 옵션은 다음과 같습니다.
--target
: 생성된 JavaScript 코드의 ECMAScript 대상 버전을 지정합니다(예: "es5", "es6").--module
: 생성된 JavaScript 코드에서 사용할 모듈 시스템을 지정합니다(예: "commonjs", "amd", "es6").--esModuleInterop
: CommonJS 모듈과의 호환성을 활성화하고 기본 내보내기가 없는 모듈에서 기본 가져오기를 허용합니다.--declaration
: 해당.d.ts
선언 파일을 생성합니다.--sourceMap
: 더 나은 디버깅 지원을 위해 소스 맵 파일을 생성합니다.--noEmitOnError
: 컴파일 오류가 있는 경우 TypeScript가 JavaScript 파일을 내보내지 않도록 합니다.
이러한 옵션은 tsconfig.json
파일에서 구성할 수 있습니다.
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"esModuleInterop": true,
"declaration": true,
"sourceMap": true,
"noEmitOnError": true
}
}
결론
이러한 옵션을 사용하면 TypeScript가 코드를 트랜스파일하는 방식을 제어하여 호환성을 보장하고 선언 파일을 생성하며 디버깅 프로세스를 지원할 수 있습니다.
반응형
'Language > TypeScript' 카테고리의 다른 글
[TypeScript] typeof, instanceof, literal로 타입 보호하기 (1) | 2024.05.14 |
---|---|
[TypeScript] Indexed Access Types 및 Mapped Types (1) | 2024.05.13 |
[TypeScript] Namespace, Generic and Custom Module (2) | 2024.05.03 |
[TypeScript] Generic, Type Guard, Signature 및 Overload (3) | 2024.05.02 |
[TypeScript] 고급 타입, 매핑된 타입, keyof/typeof (4) | 2024.04.30 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!