클래스의 생성자

class Person2 {
	constructor(public name: string, public age?: number) {}
}

let jack2: Person2 = new Person2('Jack', 32);
console.log(jack2) 
// Person2 { name: 'Jack', age: 32 }
class Person3 {
	constructor(name: string, age?: number) {
		this.name = name;
		this.age = age;
	}
}

let jack3: Person3 = new Person3('Jack', 32);
console.log(jack3) 
// Person3 { name: 'Jack', age: 32 }

나머지 연산자

const abc = { a: 2, b: 3, c: 4 };
const { a, ...rest } = abc;

console.log(a);
// 2
console.log(rest);
// {b: 3, c: 4}

<aside> 💡 객체도 나머지 연산이 되네!?

</aside>

객체의 타입 변환

타입 변환

let person: object = { name: 'jack', age: 32 };
person.name // error

이를 일시적으로 타입 변환하여 해결 가능하다.

(<{ name: string }>person).name

타입 단언

타입스크립트는 독특하게 타입 변환이 아닌 타입 단언(type assertion)이라는 용어를 사용합니다. type assertion은 두가지 형태가 있습니다.

(<any>window)
(window as any)

<aside> 💡 둘다 type assertion 이구나...

</aside>