let str : string = 'apple'
str = 10
// Type 'nunber' is not assignable to type 'string'.
// '숫자 타입은 문자열 타입에 할당할 수 없습니다.'
let num : number = 10
num = true
// Type 'boolean' is not assignable to type 'number'.
// '불리언 타입은 숫자 타입에 할당할 수 없습니다.'
let bool : boolean = true
bool = 'apple'
// Type 'string' is not assignable to type 'boolean'.
// '문자열 타입은 불리언 타입에 할당할 수 없습니다.'
const arr1 : number[] = [1,2,3]
const arr2 : string[] = ['apple', 'banana']
const arr3 = boolean[] = [true, false]
arr.push(true)
// Argument of type 'boolean' is not assignable to parameter of type 'number'.
// '불리언 타입의 argument(인수, 전달인자)를 숫자 타입의 parameter(매개변수)에 할당할 수 없습니다.'
const obj1 : {
name: string,
age: number
} = {
name: 'Daisy',
age: 25
}
obj.name = 10
// Type 'number' is not assignable to type 'string'
// '숫자 타입은 문자열 타입에 할당할 수 없습니다.'
obj.sayHello()
// 존재하지 않는 속성입니다.
객체의 프로퍼티를 선택적으로 가질 수 있습니다.
옵셔널 프로퍼티를 지정하지 않았다면 객체는 반드시 타입으로 지정한 프로퍼티를 가지고 있어야 합니다. 만약 그렇지 않다면 에러가 발생합니다.
const obj1 : {
name: string,
age?: number // age는 옵셔널 프로퍼티이므로 필수가 아닙니다.
} = {
name: 'Daisy'
// age 프로퍼티를 선언하지 않아도 에러가 발생하지 않습니다.
}
// Person이라는 타입 별칭을 생성합니다.
type Person = {
name: string,
age?: number
}
const obj1 : Person = {
name: 'Daisy',
age: 25
}
const obj2 : Person = {
name: 'Lee',
age: 20
}
문자열, 숫자, 불리언, 배열에 대해서 명시적으로 타입을 지정할 수 있다.
옵셔널 프로퍼티는 객체에서 선택적인 프로퍼티이다.
타입 별칭은 이름(별칭)을 붙여 재사용하는 타입이다.