단순객체는 const로!

YEONGHUN KO·2022년 12월 6일
0

TYPESCRIPT - BASICS

목록 보기
1/7
post-thumbnail

객체를 이용해서 상수를 보관하고 싶었다.

const LOGIN_INPUT_CONTENT = {
  EMAIL: 'email',
  PASSWORD: 'password',
}

하지만 이렇게 했을경우 LOGIN_INPUT_CONTENT안에 EMAIL,PASSWORD의 타입이 string으로 변경된다. call by reference이기 때문에 객체 안의 값은 얼마든지 바뀔 수 있기 때문이다.

그럼 LOGIN_INPUT_CONTENT을 타입으로 사용할 수 없게 된다.

이때 사용하는 키워드가 as const 이다. 말그대로 안에 키값도 상수로 못박아둠으로써 변경되지 않는다는것을 명시해준다.

const LOGIN_INPUT_CONTENT = {
  EMAIL: 'email',
  PASSWORD: 'password',
} as const

그럼 커서를 올렸을때 각각의 key에 해당되는 value가 나오면서 readonly로 보여진다.

그럼 이 객체의 value를 type으로 사용하고 싶다면? generic을 쓰면 된다. (아직까지 valueOf같은 키워드는 typescript에서 존재하지 않는다)

type valueOf<T> = T[keyof T]

const something = (value:valueOf<typeof LOGIN_INPUT_CONTENT>) => {}

출처: https://yceffort.kr/2021/05/value-of-typescript

profile
'과연 이게 최선일까?' 끊임없이 생각하기

0개의 댓글