전체 목록
TypeScriptMedium#136

tsconfig의 strict 옵션을 켜면 어떤 이점이 있나요?

#TS#tsconfig#strict#정적분석

답변 포인트

엄격한 정적 분석과 점진 도입를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

strict는 null, any, 함수 타입 등 여러 검사를 엄격하게 만들어 런타임 오류 가능성을 컴파일 단계에서 줄입니다. 기존 프로젝트는 점진적으로 켜며 오류를 줄이는 전략이 현실적입니다.

strict는 null, any, 함수 타입 등 여러 검사를 엄격하게 만들어 런타임 오류 가능성을 컴파일 단계에서 줄입니다. 기존 프로젝트는 점진적으로 켜며 오류를 줄이는 전략이 현실적입니다.

핵심 개념

핵심 기준은 엄격한 정적 분석과 점진 도입입니다. 이 개념은 단순한 용어가 아니라, 실제 코드나 시스템에서 반복적으로 생기는 문제를 다루기 위해 등장했습니다.

TypeScript는 런타임 전에 실수를 발견하고 코드의 의도를 타입으로 문서화하기 위해 사용합니다. 좋은 타입은 자동완성, 리팩터링, 협업 안정성을 높여줍니다.

동작 흐름

  1. 먼저 어떤 문제가 있는지 확인합니다.
  2. 이 개념이 그 문제를 어떤 기준으로 나누거나 해결하는지 봅니다.
  3. 실제 코드에서는 입력, 상태, 실행 순서, 비용이 어떻게 바뀌는지 확인합니다.
  4. 마지막으로 한계와 부작용을 함께 점검합니다.

실제 예시

TypeScript
type ApiResponse<T> =
  | { ok: true; data: T }
  | { ok: false; error: string };

function handle<T>(response: ApiResponse<T>) {
  if (response.ok) return response.data;
  throw new Error(response.error);
}

타입은 런타임 값을 더 안전하게 다루기 위한 설계 도구입니다.

실무에서 주의할 점

  • 타입 단언으로 오류를 덮기보다 타입을 좁히는 코드를 먼저 고려합니다.
  • 런타임 검증이 필요한 외부 입력은 타입만으로 안전해지지 않습니다.
  • 공개 타입은 너무 구체적이어도, 너무 느슨해도 유지보수가 어려워집니다.

함께 연결해서 보면 좋은 키워드

TS, tsconfig, strict, 정적분석

정리

한 줄로 정리하면, strict는 null, any, 함수 타입 등 여러 검사를 엄격하게 만들어 런타임 오류 가능성을 컴파일 단계에서 줄입니다. 기존 프로젝트는 점진적으로 켜며 오류를 줄이는 전략이 현실적입니다. 실무에서는 개념을 적용하는 조건과 적용하지 않았을 때 생기는 문제까지 함께 이해하는 것이 중요합니다.

strict 옵션이 주는 이점

strict는 TypeScript의 엄격한 타입 검사 옵션 묶음입니다. 켜면 초기에 에러가 늘어나지만 런타임 오류로 이어질 가능성이 큰 코드를 컴파일 단계에서 발견할 수 있습니다.

JSON
{
  "compilerOptions": {
    "strict": true
  }
}

대표 하위 옵션

옵션효과
strictNullChecksnull/undefined를 명확히 처리
noImplicitAny암묵적 any 방지
strictFunctionTypes함수 타입 호환성 엄격화
strictPropertyInitialization클래스 필드 초기화 확인
TypeScript
function greet(name?: string) {
  return name.toUpperCase(); // strictNullChecks에서 에러
}

도입 전략

기존 프로젝트라면 한 번에 켜기보다 noImplicitAny, strictNullChecks처럼 영향이 큰 옵션을 단계적으로 켜고, 경계 영역에는 unknown과 런타임 검증을 도입하는 방식이 현실적입니다.

관련 질문

같은 카테고리/태그 기준