TIR: 타입스크립트 프로그래밍 | 타입의 모든것 (3) object - 220826

Lumpen·2022년 8월 25일
0

TIR

목록 보기
29/40

객체

타입스크립트의 객체 타입은 객체의 형태를 정의한다
형태만 구분하기 때문에 객체 리터럴과 new 연산자로 생성한 객체를 구분할 수 없다

구조 기반 타입화

구조 기반 타입화에서는 객체의 이름과 상관 없이 어떤 프로퍼티를 가지고 있는지를 구분한다 (덕 타이핑)

어노테이션

타입을 object으로 어노테이션 하는 것은 any보다 조금 좁은 타입일 뿐으로
객체가 제 역할을 할 수 없다
객체는 각 객체가 가진 프로퍼티와 프로퍼티의 타입을 지정해주어야 한다
객체는 지정된 이름과 타입을 갖는 프로퍼티를 외의 프로퍼티를 사용할 수 없다

객체를 const로 선언 시

객체는 변할 수 있는 값이 프로퍼티로 들어가기 때문에 const와 let의 선언에 따른 차이가 발생하지 않는다

확실한 할당

타입스크립트는 변수를 사용하기 전에 값을 할당해야만 사용할 수 있다

const a: {
  b: number
  c?: string
  [key: number]: boolean

a는 number 타입의 프로퍼티 b를 가진다
a는 string 타입의 프로퍼티 c를 가질 수도 있고 없을 수도 있다
a는 boolean 값을 갖는 number 타입의 프로퍼티를 여러개 가질 수 있다

undefined 값은 string 타입 속성에 할당할 수 있는 것 같다

인덱스 시그니처

[key: T]: U

위와 같은 문법을 인덱스 시그니처라고 부른다
객체가 여러 키를 가질 수 있음을 알려준다
해당 객체의 모든 T 타입 키는 U 타입을 갖는다 라고 명시하는 것

인덱스 시그니처를 사용하면 다양한 키를 객체에 안전하게 줄 수 있다

필요하면 특정 필드에 readonly 한정자를 사용해 읽기 전용으로 정의할 수 있다
이렇게 되면 객체에 const를 적용한 것 처럼 된다 (상수의 느낌)

빈 객체 타입 / object 타입

빈 객체 타입, object 타입은 쓰지 않는다

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글