TypeScript는 JavaScript에 정적 타입을 도입하여 개발자가 코드를 더욱 안전하게 유지하고 에러를 사전에 방지할 수 있도록 합니다. TypeScript에서는 변수나 속성에 값을 할당할 때 해당 값이 존재할 수 있는지 여부를 명시적으로 표현할 수 있습니다.
Nullable 타입
Nullable 타입은 변수나 속성이 null
이거나 undefined
일 수 있다는 것을 나타냅니다. 이를 표현하기 위해 타입명 | null | undefined
와 같은 형태로 정의합니다.
let nullableValue: string | null = 'Hello';
nullableValue = null;
위 예시에서 nullableValue
는 문자열이거나 null
을 가질 수 있는 타입으로 선언되었습니다.
Non-Nullable 타입
반면에 Non-Nullable 타입은 변수나 속성이 항상 값이 존재해야 한다는 것을 나타냅니다. TypeScript 2.0 버전부터 Non-Nullable 타입을 명시적으로 나타내기 위해 타입명
뒤에 !
기호를 사용할 수 있게 되었습니다.
let nonNullableValue: string! = 'Hello';
nonNullableValue = null; // 에러: 'null'은 'string' 타입에 할당될 수 없습니다
위 예시에서 nonNullableValue
는 항상 문자열 값을 가지는 타입으로 선언되었습니다. 만약 null
이나 undefined
를 할당하려고 하면 컴파일러가 에러를 발생시킵니다.
결론
Nullable 타입과 Non-Nullable 타입은 TypeScript에서 값이 존재할 수 있는지를 명시적으로 표현하고, 이를 통해 코드 안정성을 높일 수 있습니다. 애플리케이션을 개발하면서 이러한 특징을 적절히 활용하여 안전하고 가독성 좋은 코드를 작성할 수 있습니다.
참고문헌: TypeScript Handbook - Nullable types, TypeScript Deep Dive - Non-nullable assertion operator