본문 바로가기
C.W.K.
Stream
Lesson 01 of 05 · published

`strict: true`: 엄격성 옵션을 한 기준으로 묶기

~8 min · strict-mode, strict, tsconfig

Level 0Curious
0 XP0/93 lessons0/23 achievements
0/100 XP to next level100 XP to go0% complete
"strict: true는 일곱 검사를 한꺼번에 켜는 메타 플래그야."

strict 가족

tsconfig의 strict: true는 다음 일곱 설정을 함께 켜.

  • noImplicitAny
  • strictNullChecks
  • strictFunctionTypes
  • strictBindCallApply
  • strictPropertyInitialization
  • noImplicitThis
  • useUnknownInCatchVariables

각 설정은 서로 다른 허점을 잡고, 2026년 새 TypeScript 프로젝트에서는 첫날부터 모두 켜는 것이 기본이야.

왜 함께 켜는가

하나만 켜고 나머지를 빼면 다른 종류의 느슨함이 남아. 레거시 코드를 점진적으로 옮길 때는 개별 설정을 잠시 끌 수 있지만 방향은 늘 더 엄격한 쪽이어야 해.

strict가 끝은 아니야

strict가 포함하지 않는 세 설정도 새 프로젝트에서는 함께 켜.

  • noUncheckedIndexedAccess: 인덱스 결과에 undefined를 더해.
  • exactOptionalPropertyTypes: 키 부재와 명시적 undefined를 구별해.
  • noImplicitReturns: 모든 코드 경로가 값을 반환하게 해.

@tsconfig/strictest 베이스는 이 설정들을 포함한 최대 엄격 출발점을 제공해.

새 프로젝트의 기본값은 최대 엄격 설정이야. 오류를 나중에 추적하는 것보다 컴파일 단계에서 가정을 드러내는 편이 싸.

Code

최대-strict tsconfig·json
// tsconfig.json — full strict + extra flag.
{
  "compilerOptions": {
    "strict": true,
    // 위 7 sub-flag 가 strict: true 켜지면 암묵.
    // strict:true 에 없는 extra-strict flag:
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    // 흔한 companion:
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "verbatimModuleSyntax": true
  }
}

// 또는 커뮤니티 'strictest' base 상속만:
{
  "extends": "@tsconfig/strictest/tsconfig.json"
}

External links

Exercise

새 프로젝트에서 strict: true와 이 레슨의 추가 플래그 세 개를 켜. 타입 없는 매개변수, null일 수 있는 값의 접근, 범위를 벗어날 수 있는 인덱스 접근을 일부러 작성해 각 설정이 오류를 내는지 확인해. 추가 플래그 가운데 하나는 유지하고 하나는 꺼 보며 코드 작성 경험이 어떻게 달라지는지도 적어.
Hint
추가 세 설정은 strict: true만으로 켜지지 않아. 각각 다른 종류의 숨은 위험을 잡으니 어떤 코드에서 발동하는지 직접 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.