You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
클래스 생성자는 매개변수와 관련하여 전형적인 클래스 메서드처럼 취급된다. 타입스크립트는 메서드 호출 시 올바른 타입의 인수가 올바른 수로 제공되는지 확인하기 위해 타입 검사를 수행한다.
6
+
7
+
## 8.2 클래스 속성
8
+
9
+
타입스크립트에서 클래스의 속성을 읽거나 쓰려면 클래스에 명시적으로 선언해야 한다. 클래스 속성은 인터페이스와 동일한 구문을 사용해 선언한다.
10
+
11
+
### 초기화 검사
12
+
13
+
엄격한 컴파일러 설정이 활성화된 상태에서 타입스크립트는 `undefined` 타입으로 선언된 각 속성이 생성자에서 할당되었는지 확인한다. 엄격한 초기화 검사를 적용하면 안 되는 속성인 경우에는 이름 뒤에 !를 추가해 검사를 비활성화하도록 설정할 수 있다. 이렇게 하면 타입스크립트에 속성이 처음 사용되기 전에 `undefined` 값이 할당된다.
14
+
15
+
### 읽기 전용 속성
16
+
17
+
원시 타입의 초기값을 갖는 `readonly`로 선언된 속성은 더 넓은 원싯값이 아니라 값의 타입이 가능한 한 좁혀진 리터럴 타입으로 유추된다. 값이 나중에 변경되지 않는다는 것을 알기 때문에 더 공격적인 초기 타입 내로잉을 편하게 느낀다. 따라서 타입 애너테이션이 필요하다.
18
+
19
+
## 8.3 타입으로서의 클래스
20
+
21
+
클래스는 클래스 선언이 런타임 값(클래스 자체)과 타입 애너테이션에서 사용할 수 있는 타입을 모두 생성한다. 또한 타입스크립트는 객체의 형태만 고려하기 때문에 클래스의 동일한 멤버를 모두 포함하는 모든 객체 타입을 클래스에 할당할 수 있다.
22
+
23
+
## 8.4 클래스와 인터페이스
24
+
25
+
타입스크립트는 클래스 이름 뒤에 `implements` 키워드와 인터페이스 이름을 추가함으로써 클래스의 해당 인스턴스가 인터페이스를 준수한다고 선언할 수 있다.
26
+
27
+
타입스크립트는 인터페이스에서 클래스의 메서드 또는 속성 타입을 유추하지 않는다. 인터페이스를 구현하는 것은 안정성 검사를 위해서이며 모든 인터페이스 멤버를 클래스 정의로 복사하지 않는다.
28
+
29
+
## 8.5 클래스 확장
30
+
31
+
타입스크립트는 다른 클래스를 확장하거나 하위 클래스를 만드는 자바스크립트 개념에 타입 검사를 추가한다.
32
+
33
+
## 8.6 추상 클래스
34
+
35
+
일부 메서드의 구현을 선언하지 않고 대신 하위 클래스가 해당 메서드를 제공할 것을 예상하고 기본 클래스를 만들 수 있다. 추상화 메서드 선언은 추상화 기본 클래스에서 메서드의 본문을 제공하는 것을 건너뛰고 인터페이스와 동일한 방식으로 선언된다.
36
+
37
+
## 8.7 멤버 접근성
38
+
39
+
타입스크립트의 이전 멤버 접근성 키워드를 자바스크립트의 `# private` 필드와 함께 사용할 수 없다.
0 commit comments