타입스크립트는 ES2015에 소개된 class
키워드를 완전히 지원한다.
다른 자바스크립트 기능과 마찬가지로, 타입스크립트에서 클래스를 사용할 때 타입 주석을 사용할 수 있으며, 클래스와 다른 타입 사이의 관계를 표현할 수 있도록 기타 문법 또한 사용할 수 있다.
Table of contents
다음은 가장 기초적인 클래스인 빈 클래스다.
class Point {}
이 클래스는 아직 그렇게 유용하지 못하다. 따라서 이제 클래스에 멤버를 추가해보자.
필드 선언은 퍼블릭 쓰기가능 프로퍼티를 클래스에 생성한다.
class Point {
x: number;
y: number;
}
const pt = new Point();
pt.x = 0;
pt.y = 0;
다른 곳과 마찬가지로, 타입 주석은 옵셔널이지만, 특정하지 않는다면 암묵적으로 any
타입이 할당된다.
필드는 *이니셜라이저(initializer)*를 가질 수 있다. 이니셜라이저는 클래스가 인스턴스화되면 자동적으로 실행될 것이다.
class Point {
x = 0;
y = 0;
}
const pt = new Point();
// Prints 0, 0
console.log(`${pt.x}, ${pt.y}`);
const, let, var 와 마찬가지로 클래스의 이니셜라이저는 그 타입을 추론할 때 사용할 수 있다.
const pt = new Point();
pt.x = '0';
// Type 'string' is not assignable to type 'number'.
--strictPropertyInitialization
--strictPropertyInitialization
설정은 생성자(constructor)에서 클래스 필드가 초기화되어야 하는지를 제어할 수 있게 해준다.
class BadGreeter {
name: string;
}
// Property 'name' has no initializer
// and is not definitely assigned in the constructor.
class GoodGreeter {
name: string;
constructor() {
this.name = 'hello';
}
}