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