let player : number | string | boolean | undefined | null
// 타입지정만.. 몇개니..
타입을 나열하는 경우가 정말 많고 코드가 더러워보일 위험이 있다.
이럴 때 변수에 담아쓸 수가 있는데
type 이라는 키워드를 쓰면 된다.
type 키워드를 쓰는 것을 type alias라고 한다.
type Player = number | string | boolean | undefined | null
let user : Player ;
type 타입변수명 = 타입종류
이렇게 사용하면 된다.
관습적으로 타입얼라이어스를 할 때 관습적으로 변수명은 대문자로 시작
Object 와 배열도 가능
오브젝트의 type Alias
type Animal = {
eyes : number
leg : number
name: string
isAlive : boolean
}
let myPet : Animal = {
eyes : 4,
leg ; 4,
name: '투투',
isAlive : false
}
배열의 type Alias
type Bird = string []
let bird : Bird = ['asd','asdf'] // 굳이 타입지정을?? 암튼 된다.
object의 value값을 타입의 readonly로 잠그기
Javascript 에서
const obj = {집문서 : '강남', 집명의: '나' }
obj.집명의 = '친구A'
console.log(obj) // {..., 집명의:'친구A'}
const로 object를 선언해도 내부값은 참조만 하고 있는 것이기에 변경이 가능하다.
object의 값을 바뀌지 않게 막고 싶으면 typescirpt의 문법
을 사용해보자
readonly 키워드는 오브젝트의! 속성 왼쪽에 붙일 수 있다
object의 특정 속성을 변경불가능하게 잠궈준다.
type 재산 = {
readonly 집명의: string
집문서: string[]
}
const 내재산 : 재산 = {
집명의 : 'choi'
집문서 : ['강남','별내']
}
// 이렇게 타입에서 readonly로 특정 key,value를 잠궈버리면
// 오브젝트 변수에 타입을 지정하고 key,value 값을 '선언' 해버리면
// 바꿀 수 없게 된다.
오브젝트의 속성 몇개가 선택사항이라면
type alias에 ?
물음표 연산자를 추가해주자
type Square = {
color ?: string,
width: number
}
let square : Square = {
width: 200
}
오브젝트의 type alias의 물음표도
undefined 라는 타입도 가질 수 있다 라는 의미이다.
OR 연산자도 있는데 &연산자가 없을까...
type Name = string;
type Age = number;
type NewOne = Name | Age;
OR 연산자를 사용하여 Union type을 만들 수 있다.
type PositionX = { x: number };
type PositionY = { y: number };
type XandY = PositionX & PositionY
let 좌표 :XandY = { x : 1, y : 2 }
object에 지정한 타입의 경우에도 합칠수 가있다.
합치다라는 표현보단
멋진 개발자 용어로type alias를 extend 한다라고 말하자!