기본 형태
JavaScript에서 처럼 class를 생성할 때 constructor를 이용해서 생성할 때는 먼저 변수에 대한 타입을 먼저 선언해 주어야 한다.
class A {
num: number;
str: string;
constructor(num: number, str: string){
this.num = num;
this.str = str;
}
}
new A(10, 'qwe');
하지만 constructor없이 class를 생성할 수도 있다.
class A {
num: number = 10;
str: string = 'tmp';
}
/*
JavaScript
class A {
constructor() {
this.num = 10;
this.str = 'tmp';
}
}
*/
Private, Protected, Public
JavaScript에서는 Private를 #을 이용했지만 TypeScript에서는 private와 protected로 명시할 수 있다. 하지만 js로 변환할 때는 public으로 변환되는 문제가 있지만, 이미 타입스크립트 딴에서 오류가 나기 때문에 private와 protected로 사용하는 것을 권장한다.
class B {
private num: number;
#str: string;
constructor(num: number, str: string){
this.num = num;
this.#str = str;
}
protected method() {
console.log('private');
}
}
Abstract, Implements, Extends
class는 interface를 implements 즉 구현하는 기능이 가능하다. interface를 implements한 class는 interface의 양식을 그대로 따라와야 한다.
extends는 기존의 class를 확장할 때 사용된다.
interface i{
num: number;
str: string;
}
class c implements i {
num: number = 10;
str: string = 'aaa';
here: string = 'here';
}
class b extends c{
method(){}
}
abstract class는 추상 클래스로 상속(extends)를 통해서 완전한 클래스를 만들 수 있다.
abstract class human{
name: string;
age: number;
constructor(name:string, age:number){
this.name = name;
this.age = age;
}
abstract consoleSex(sex: string): void;
}
class man extends human{
sex: string;
constructor(name:string, age:number, sex: string){
super(name, age);
this.sex = sex;
}
consoleSex(sex: string): void{
console.log(sex);
}
}
'Language > TypeScript' 카테고리의 다른 글
#7 TypeScript Optional, callback의 매개변수 (0) | 2023.09.02 |
---|---|
#6 TypeScript 제네릭(Generics) (0) | 2023.09.02 |
#4 TypeScript 타입 추론(Inference), 단언(Assertion), 가드(Guard) (0) | 2023.08.30 |
#3 TypeScript 타입의 생성 (0) | 2023.08.30 |
#2 TypeScript 타입의 종류 (0) | 2023.08.29 |