[TypeScript] 타입을 변수에 담아보기 그리고 readonly

Eden·2023년 1월 26일
0

TypeScript

목록 보기
6/10
post-thumbnail

Type Aliases

코드를 열심히 짜다보면

이런 식으로 매우 길고 복잡하게 타입을 나열하는 경우가 많아진다.
너무 길고 보기싫을 때, 나중에 또 사용을 하고 싶을 때 변수에 담아 써보도록 하자.

변수 만드는 것 처럼 type이라는 키워드를 쓰면 된다.
type 키워드 쓰는 것을 type alias라고 한다.
alias를 번역하면 별칭이라는 뜻이지만 변수라고 생각하면 된다.

Type Aliases 사용법

type 타입변수명 = 타입종류;

타입을 변수처럼 만들어서 쓰는 alias 문법이다. 관습적으로 대문자로 시작한다.
일반 자바스크립트 변수랑 차별을 두기 위해 파스칼케이스로 작명하는 것이 좋다.

object타입도 저장 할 수 있다.


object에 타입지정할 때는 이렇게 하면 된다.

type 키워드를 쓰지 않으면 이렇게 만들어야 하는데 🔻

정리 되지 않아 좋은 코드는 아니다.

Readonly란?

자바스크립트 문법 중, const 변수가 있다. const 변수는 값이 변하지 않는 변수를 만들고 싶을 때 const를 쓰면 된다. 재할당시 에러가 나기 때문에 값이 변하는 것을 미리 감지하고 차단할 수 있기 때문에..


그런데 object 자료를 const에 집어넣어도 object 내부는 마음대로 변경 할 수 있다.
const 변수는 재할당만 막아줄 뿐이지 그 안에 있는 object 속성 바꾸는 것 까지는 관여하지 않기 때문이다.
object 속성을 바뀌지 않게 막고 싶으면 타입스크립트 문법을 쓰면 된다.

readonly 키워드는 속성 왼쪽에 붙일 수 있으며 특정 속성을 변경할 수 없게 잠궈준다.


한 번 부여된 후에 앞으로 바뀌면 안되는 속성들을 readonly로 잠구면 된다.
(물론 readonly는 컴파일시 에러를 내는 것이고 변환된 js파일에서는 잘 바뀐다.???)

속성 몇 개는 쓸 수도 있고 안 쓸 수도 있습니다?

그러니까 어떤 object 자료는 name, age 속성이 둘 다 필요하지만,, 다른 object 자료에서는 age 속성이 선택사항이라면 type alias를 여러개 만들어야하는 것이 아니라 물음표연산자만 추가하면 된다.

사실 ? 기호는 "undefined라는 타입도 가질 수 있다"는 뜻이다.

type 키워드도 더하기가 되나요?


OR 연산자를 이용해서 Union type을 만들어 사용할 수 있다.


object에 지정한 타입의 경우 합치기도 가능하다.
& 기호를 쓴다면 object 안의 두 개의 속성을 합칠 수 있다.
위 코드에서 "NewType"은 { x: number, y: number }라고 정의된다.
이것을 "extend한다"고 한다.

Type alias & Type alias는 물론 Type alias & { name: 타입 } 도 가능하다.

type 키워드는 재정의가 안됩니다.


이렇게 하면 에러가 난다.
나중에 type 키워드랑 유사한 interface 키워드에선 재정의가 가능하다~

profile
peanutbuttersandwich🥜

0개의 댓글