내용 보기

작성자

관리자 (IP : 172.17.0.1)

날짜

2020-08-27 05:33

제목

[TypeScript] 객체 리터럴 문법 / 타입 별칭 정의 / 유니온, 인터섹션 타입


01. 객체 리터럴 문법
let c: {
    firstName: string,
    lastName: string
= {
    firstName: 'aa',
    lastName: 'bbb'
}
console.log(`firstName : ${c.firstName} lastName : ${c.lastName}`);
 
class Person {
    constructor(
        public firstName: string,
        public lastName: string,
    ) {}
}
= new Person('aaa''bb1');  // 속성 값의 형식에 맞는 클래스를 대입할 수 도 있다.
 
let cc = new Person('aaa''bb1');
console.log(`firstName : ${cc.firstName} lastName : ${cc.lastName}`);
cs


02. 타입 별칭 정의

type Age = number;
type MyInfo = {
    name: string
    age: Age  // 위에 정의된 number타입을 갖는 Age타입
}
 
let age: Age = 55;
let myInfo: MyInfo = {
    name'밍',
    age: 17
}
 
 
// 타입의 유효 영역
if(true) {
    // 위에 정의한 MyInfo 타입을 덮어씀
    type MyInfo = {
        name: string
        age: Age
        job: string
    }
 
    let myInfo: MyInfo = {
        name'밍',
        age: 17,
        job: '건물주, 카페사장'
    }
    console.log(`name : ${myInfo.name} age : ${myInfo.age} job : ${myInfo.job}`);
}
 
// 다시 처음 정의한 MyInfo타입을 바라봄
let aaa: MyInfo = {
    name'밍',
    age: 17,
    //job: '건물주, 카페사장'  <- 오류발생
}
cs


03. 유니온(합집합, |)과 인터섹션(교집합, &) 타입

type Cat = {name: string, purrs: boolean};
type Dog = {name: string, baarks: boolean, wags: boolean};
type CarOrDogOrBoth = Cat | Dog;  // Cat, Dog 또는 둘다 할당 가능
type CatAndDog = Cat & Dog;  // name 속성이 있다는 사실을 알 수 있음
 
// CarOrDogOrBoth타입을 이용해 Cat으로 만들기
let 멀티애완: CarOrDogOrBoth = {
    name'먼지',
    purrs: true
}
 
// dog로 변신
멀티애완 = {
    name'푸',
    baarks: true,
    wags: true
}
 
// 잡종으로 변신
멀티애완 = {
    name'먼지&푸',
    purrs: true,
    baarks: true,
    wags: true
}
 
// 변신못하는 온전한 잡종
let 온전한잡종: CatAndDog = {
    name'먼지&푸',
    purrs: true,
    baarks: true,
    wags: true
}
cs


출처1

출처2