[TypeScript] 엄격한 타입 검사, 고급 컴파일러 옵션

타입스크립트의 강점은 표현력이 풍부한 구문뿐만 아니라 강력한 타입 검사 및 컴파일 옵션에도 있습니다. 이번 글에서는 엄격한 타입 검사 및 고급 컴파일러 옵션에 대해 집중적으로 살펴봅니다. 이러한 기능은 코드 품질을 높이고, 잠재적인 오류를 조기에 발견하며, 컴파일 프로세스를 미세 조정하는 데 도움이 됩니다. 타입 안전성을 보장하고 TypeScript 워크플로를 최적화하는 미묘한 차이를 알아보는 여정에 함께하세요.

엄격한 타입 검사(Strict Type Checking)

엄격한 타입 검사를 사용하려면 컴파일 시 일반적인 프로그래밍 오류를 포착하는 데 도움이 되는 여러 가지 TypeScript 컴파일러 옵션을 사용 설정해야 합니다. 엄격한 타입 검사를 사용하려면 몇 가지 하위 옵션이 포함된 --strict 플래그를 사용하면 됩니다.

  • --strictNullChecks: 변수의 타입에서 명시적으로 허용하지 않는 한 변수가 null 또는 정의되지 않은 상태로 할당되지 않도록 합니다.
  • --strictFunctionTypes: 함수 매개변수 타입과 반환 타입을 보다 엄격하게 검사합니다.
  • --strictPropertyInitialization: 모든 클래스 프로퍼티가 생성자에서 초기화되도록 합니다.
  • --strictBindCallApply: 함수의 바인드, 호출 및 적용 메서드를 더 엄격하게 검사합니다.

이러한 옵션을 활성화하려면 다음 컴파일러 명령을 사용하면 됩니다.

1
tsc --strict tsfile.ts

또는 tsconfig.json에서 설정할 수 있습니다.

1
2
3
4
5
6
7
8
9
{
"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 파일에서 구성할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"esModuleInterop": true,
"declaration": true,
"sourceMap": true,
"noEmitOnError": true
}
}

결론

이러한 옵션을 사용하면 TypeScript가 코드를 트랜스파일하는 방식을 제어하여 호환성을 보장하고 선언 파일을 생성하며 디버깅 프로세스를 지원할 수 있습니다.

Share