TypeScript

[TS] 객체의 선택적 속성(optional property, 옵셔널 프로퍼티)

_doit 2024. 7. 24. 19:07
728x90
반응형

타입스크립트(TypeScript)는 타입에 엄격한 프로그래밍 언어이므로 객체 프로퍼티의 타입을 정의했으나 값을 할당하지 않는 경우 에러가 발생한다

이러한 경우 옵셔널 프로퍼티(Optional Properties) 문법을 사용하여 해결할 수 있다.

 

옵셔널 프로퍼티(optional property)란?

객체의 속성 중 필수가 아닌, 있어도 되고 없어도 되는 속성

값을 할당하지 않아도 문제가 없다.

인터페이스나 타입 정의에서 물음표 ?를 사용하여 표시한다.

interface Data {
  check?: boolean; // check는 있어도 되고 없어도 됨
}
const d1: Data = { check: true };       // 정상, ok가 true (boolean 타입)
const d2: Data = { check: false };      // 정상, ok가 false (boolean 타입)
const d3: Data = { check: undefined };  // 정상, ok가 undefined (옵셔널이기 때문에 허용)
const d4: Data = {};                    // 정상, ok가 생략됨 (옵셔널이기 때문에 허용)

const d5: Data = { check: null };       // 오류, ok는 boolean 타입이거나 생략되어야 하는데 null은 boolean이 아님
  • 객체를 정의할 때 해당 프로퍼티를 생략할 수 있다.
  • 명시적으로 undefined로 설정할 수 있다.
  • 타입은 정의된 타입과 일치해야 합니다 (null은 허용되지 않음)

 

 

즉, 프로퍼티의 값이 필수가 아닌 경우 선택적 프로퍼티 문법을 사용하여 값을 생략할 수 있다.

 

interface User {
  name: string;
  age?: number;  // age는 있어도 되고 없어도 됨
}

 

const user2: User = { name: "Bob", age: 25 };            // 정상
const user1: User = { name: "Alice" };                   // 정상
const user3: User = { name: "Charlie", age: undefined }; // 정상
const user4: User = { name: "David", age: null };        // 오류

 

 

 

-끝-

728x90
반응형