[typescript] nullable 타입과 non-nullable 타입의 차이점

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