TypeScript설정과 실전

strict 모드와 null 안전성

strict 계열 옵션이 어떻게 더 강한 오류 검사를 만들고, strictNullChecks가 왜 중요한지를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

json
{
  "compilerOptions": {
    "strict": true
  }
}

설명

  • strict는 여러 강한 검사 옵션을 한 번에 켜 주는 대표 설정입니다.
  • 이 옵션이 켜지면 noImplicitAny, strictNullChecks 같은 검사들이 함께 활성화되어, 느슨한 코드를 더 빨리 문제로 드러냅니다.
  • 특히 strictNullChecksnullundefined를 무시하지 않고 별도 타입으로 취급해, 값이 없을 수 있는 경우를 더 정직하게 다루게 만듭니다.
  • 처음엔 오류가 많이 늘어나는 것처럼 보여도, 장기적으로는 "있을 거라고 생각했는데 없었다"는 종류의 버그를 줄이는 데 매우 효과적입니다.
  • 대형 프로젝트일수록 strict를 기본으로 두고, 정말 필요한 예외만 국소적으로 푸는 편이 관리에 유리합니다.

짧은 예제

ts
const users = [{ name: "Ada" }];
const found = users.find((user) => user.name === "Grace");

// strictNullChecks가 켜져 있으면
// found는 { name: string } | undefined

빠른 정리

옵션효과
strict강한 타입 검사 묶음을 활성화
noImplicitAny암시적 any를 오류로 처리
strictNullChecksnull/undefined를 별도 타입으로 취급
장점런타임에서 늦게 터질 버그를 앞당겨 발견
비용초기에 오류 수가 늘어날 수 있음

주의할 점

strict 오류를 없애기 위해 as any를 남발하면, 결국 strict를 켠 의미가 약해집니다. 불편하더라도 값이 정말 없는지, 타입을 더 좁힐 수 있는지부터 먼저 보는 편이 좋습니다.

참고 링크

2 sources