Skip to content

Commit 99afb47

Browse files
committed
[3주차] chp8
1 parent 740eb30 commit 99afb47

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

백윤서/chapter08/README.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# 8장
2+
3+
## 8.1 클래스 메서드
4+
5+
클래스 생성자는 매개변수와 관련하여 전형적인 클래스 메서드처럼 취급된다. 타입스크립트는 메서드 호출 시 올바른 타입의 인수가 올바른 수로 제공되는지 확인하기 위해 타입 검사를 수행한다.
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

Comments
 (0)