매일 배운 것을 정리하며 기록합니다. TypeScript 객체와 타입에 대해 공부하고 있습니다.
자바스크립트 타입과 달리 '소문자'
변수 선언문을 확장하여 타입을 명시
let 변수 이름: 타입 [=초깃값]
const 변수 이름: 타입 =초깃값
ex)
let n : number = 1
let b: boolean = true
let s : string = 'good'
let o : object = {}
지정한 타입에 해당하는 값으로만 바꿀 수 있음.
n = 'a' // error
b = 1 // error
s = false // error
o = {name :'Jack', age:32} // good
마찬가지로 자바스크립트와 호환성을 위함.
어떤 타입의 값도 할당 가능
let a: any = 0
a = 'hello'
a = true
a = {}
타입 계층
anyany -> number, boolean, string
any -> objectany-> object-> interface, class...
undefined
interface 키워드를 통해 객체의 타입 정의
객체의 타입 범위를 좁히기 위함
중괄호로 속성과 속성의 타입 주석을 나열하는 형태로 사용
interface 인터페이스 이름 {
속성 이름[?]: 속성 타입[,...]
}
ex)
interface IPerson {
name: string
age: number
}
interface IPerson2 {
name: string
age: number
etc?: boolean
}
let good1: IPerson2 = {name: 'Jack', age: 32}
let good2: IPerson2 = {name: 'Jack', age: 32, etc: true}
let ai: {
name: string
age: number
etc?: boolean
} = {name: 'Jack', age:32}
function printMe(me: {name: string, age: number, etc?: boolean}) {
console.log(
me.etc ?
`${me.name} ${me.age} ${me.etc}` :
`${me.name} ${me.age}`
)
}
printMe(ai) // Jack 32
Reference : 전예홍, 『Do it! 타입스크립트 프로그래밍』, 이지스퍼블리싱(2020), p58-65.