Skip to content

Commit 956ca43

Browse files
authored
🔀: Merge pull request #11 from Programming-Contents-List/lecture/8
🔀: main브렌치를 최신화 하기위한 merge
2 parents b0c1106 + 18e3387 commit 956ca43

File tree

2 files changed

+28
-42
lines changed

2 files changed

+28
-42
lines changed

src/index.ts

Lines changed: 5 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,5 @@
1-
//접근 제한자(Access modifier) - public, private, protected / es6에서는 접근 제한자를 지원하지 않았다 하지만 ts에서는 제공해준다.
2-
3-
abstract class Car {
4-
color: string;
5-
constructor(color: string) {
6-
this.color = color;
7-
}
8-
start(): void {
9-
console.log("start");
10-
}
11-
abstract doSomething(): string; //아무 작업을 하지 않은 추상 함수 상속받은 클래스에 해당 함수가 없다면 error 발생
12-
}
13-
14-
// const Car = new Car("red"); //-> error : 추상클래스는 new 인스턴스로 생성할 수 없다. 추상클래스는 청사진과 같다고 생각하며 된다. 따라서 오로지 상속을 통해서만 가능하다.
15-
16-
class Bmw extends Car {
17-
constructor(color: string) {
18-
super(color);
19-
// 참고로 'super()'는 부모(일반적인 super가 아님)의 constructor에 접근
20-
}
21-
// abstract doSomething()가 없다면 class는 error, 즉, 추상 클래스는 상속을 받은 쪽에서 해당 함수를 사용해야 한다.
22-
doSomething(): string {
23-
// alert("do!"); //-> error : alert는 browser에서만 사용이 가능
24-
console.log("do!");
25-
return 'Do!';
26-
}
27-
// - private: 부모 name이 private인 경우 error가 나온다. 추가적으로 '#name'은 private로 인식한다.
28-
// - protected: 부모 name이 protected인 경우 정상 동작한다. 그렇다면 public과 차이는 무엇인가.
29-
/*
30-
* new를 통해서 인스턴스 했을 경우 접근을 제한하게 된다. 즉, 자식 클래스에서는 부모 속성에 접근을 할 수 있으나 new 인스턴스인 경우 접근이 불가하다.
31-
*/
32-
// - readonly: new 인스턴스를 통해서 값을 변경할 수 없다. 그렇다면 어떻게 해야 변경을 할 수 있을까?
33-
/*
34-
* 부모 constructor 내부에서 작업을 해야한다.
35-
*/
36-
// - static: static은 정적 맴버 변수(property)를 만들어 줄 수 있다. static에 접근을 하기 위해서는 this가 아닌 class 이름으로 접근을 해야 한다.
37-
// - abstract: abstract은 추상 클래스(class) 또는 함수, 변수를 만들어 준다.
38-
}
39-
40-
const z4 = new Bmw("black");
41-
console.log(z4.doSomething()); //undefined가 출력되는 이유 : doSomething의 반환 값이 void이기 때문이다.
1+
// NonNullable<T> : NonNullable은 Null과 undefined를 제외한 타입을 생성한다.
2+
// -- data.interface 참조
3+
import {
4+
GradeType, ScoreType, User
5+
} from "./utils/data.interface"

src/utils/data.interface.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,26 @@ export interface InterToy {
7474
name: string;
7575
color: string;
7676
price: number;
77-
}
77+
}
78+
79+
export interface User {
80+
id: number;
81+
name: string;
82+
age: number;
83+
gender: "M" | "F"
84+
}
85+
86+
export interface ScoreTemp {
87+
'1': 'A' | 'B' | 'C' | 'D';
88+
'2': 'A' | 'B' | 'C' | 'D';
89+
'3': 'A' | 'B' | 'C' | 'D';
90+
'4': 'A' | 'B' | 'C' | 'D';
91+
}
92+
93+
export type GradeType = '1' | '2' | '3' | '4';
94+
export type ScoreType = 'A' | 'B' | 'C' | 'D';
95+
96+
//NonNullable
97+
export type T1 = string | null | undefined | void;
98+
//T2는 NonNullable의 따라 T1의 유니온으로 지정된 null과 undefined를 제외하고 string과 void만 남게 된다.
99+
export type T2 = NonNullable<T1>;

0 commit comments

Comments
 (0)