고급 TypeScript - 고급 컴파일러 옵션: strict 옵션

고급 컴파일러 옵션: strict 옵션

TypeScript의 strict 옵션은 코드의 안전성을 높이고, 잠재적인 오류를 사전에 방지하기 위해 매우 중요한 역할을 합니다. 이 옵션을 활성화하면 TypeScript는 더 엄격한 타입 검사를 수행하게 되며, 이는 개발자가 보다 명확하고 안정적인 코드를 작성하는 데 도움을 줍니다.

1. strict 모드란?

  • 정의: strict 모드는 TypeScript 컴파일러가 다양한 타입 검사 규칙을 적용하도록 설정합니다.
  • 목적: 코드에서 발생할 수 있는 여러 가지 문제를 사전에 인식하여 버그를 줄이는 것이 목표입니다.

2. strict 모드 활성화

  • tsconfig.json 파일에서 "strict": true로 설정하면 됩니다.

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

3. 주요 특징 및 효과

  • 타입 검사의 강화:

    • 모든 변수와 매개변수에 대해 명시적인 타입 선언이 요구됩니다.

      // strict 모드 비활성화 시 (허용됨)
      let x; // any type으로 간주됨
      
      // strict 모드 활성화 시 (오류 발생)
      let y: number; // 반드시 초기값이 필요함
      
  • null과 undefined 체크:

    • 변수가 null 또는 undefined일 수 있는 경우, 이를 명시적으로 처리해야 합니다.

      function greet(name: string | null) {
          console.log(`Hello, ${name.toUpperCase()}`); // 오류 발생 가능성 있음
      }
      
      // 수정 후 
      function safeGreet(name: string | null) {
          if (name !== null) {
              console.log(`Hello, ${name.toUpperCase()}`);
          }
      }
      
  • implicit any 방지:

    • 함수 매개변수나 반환 값에 대한 타입이 정의되지 않으면 오류가 발생합니다.

      // implicit any 허용된 경우 
      function add(x, y) { return x + y; } // 오류 없음
      
      // implicit any 금지된 경우 
      function subtract(x: number, y): number { return x - y; } // 올바른 사용법 
      

4. 실용 예제

다음은 strict 옵션을 활용하여 코드 품질을 개선한 예제입니다:

interface User {
    id: number;
    name?: string; // 선택적 속성
}

function getUser(id: number): User | null {
    if (id === 1) {
        return { id: 1 }; // name 속성이 없더라도 유효함 
    }
    return null;
}

const user = getUser(2);
if (user !== null && user.name !== undefined) { 
   console.log(user.name.toLowerCase()); // 안전하게 접근 가능 
} else {
   console.log("사용자를 찾을 수 없습니다."); 
}

위 예제에서는 사용자 정보를 가져오는 함수와 그 결과를 안전하게 처리하는 방법을 보여줍니다. strict 옵션 덕분에 우리는 각 변수와 속성이 어떤 값을 가질 수 있는지를 명확히 알 수 있습니다.

결론

TypeScript의 strict 옵션은 코드를 더욱 견고하고 유지보수하기 쉽게 만들어 주며, 개발자에게 더 많은 신뢰성을 제공합니다. 이러한 기능들을 통해 보다 나은 프로그래밍 습관 형성과 함께 프로젝트 전반에 걸쳐 일관성을 유지할 수 있습니다.

Subscribe to shimdh.log

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe