프로퍼티(Properties)
- 컴파일러는 프로퍼티의 두 가지 요소인
필수요소 프로퍼티의 유무
, 프로퍼티 타입
을 검사한다.
?(Optional Properties)
와 readonly(Readonly properties)
와 같은 예약어로 프로퍼티를 세밀하게 컨트롤 할 수 있다.
1. Optional Properties(선택적 프로퍼티)
- 프로퍼티 선언 시 이름 끝에 ?를 붙여서 표시한다.
- 인터페이스에 속하지 않는 프로퍼티의 사용을 방지하면서, 사용 가능한 프로퍼티를 기술할 때 사용한다.
- 객체 안의 몇 개의 프로퍼티만 채워 함수에 전달하는 "option bags"같은 패턴에 유용하다.
- Option 사항은 없어도 되지만, 만약 존재한다면, 반드시 정의해둔 Type과 일치해야 한다.
interface CompanyInfo {
name: string;
chairman?: string;
}
let obj: CompanyInfo = {
name: 'FaceBook'
};
2. Readonly propertie(읽기전용 프로퍼티)
- 객체가 처음 생성될 때만 값 설정이 가능하고, 이후 수정이 불가능하다.
- 프로퍼티 이름 앞에 readonly를 붙여 사용한다.
interface Student {
readonly studentNo: number;
name: string;
}
let StudentInfo: Student = {
studentNo: 123456,
name: 'Cine',
};
StudnetInfo.studentNo = 111111;
readonly vs const
readonly
와 const
의 공통점: 생성 후에 배열을 변경하지 않음을 보장한다.
- 변수는 const를 사용하고 프로퍼티는 readonly를 사용한다.
let arr: Number[] = [1, 2, 3, 4];
let readonly_arr: ReadonlyArray<number> = arr;
readonly_arr[0] = 12;
readonly_arr.push(5);
readonly_arr.length = 100;