타입스크립트 객체와 클래스
10503 단어 TILtypescriptTIL
Today I Learned
매일 배운 것을 정리하며 기록합니다. TypeScript 객체와 클래스에 대해 공부했습니다.
클래스 선언문
- ex)
class 클래스명 {
[private | protected | pubilc] 속성이름[?]: 속성 타입[...]
}
class Person1 {
name: string
age?: number
}
접근 제한자 (access modifier)
-
클래스의 속성은 public, private, protect와 같은 접근 제한자를 이름 앞에 붙일 수 있음.
-
생략 시 public으로 간주
-
접근 제한자가 붙은 매겨변수의 이름을 가진 속성이 클래스에 선언된 것처럼 동작
-
ex)
인터페이스 구현
- 다른 객체지향 언어와 마찬가지로 타입스크립트 클래스는 인터페이스를 구현할 수 있음.
- 클래스가 인터페이스 구현할 때는 implements 키워드를 사용
- 어떤 속성이 있어야 한다는 규약(spec)에 불과
- 클래스 몸통에 반드시 인터페이스가 정의하고 있는 속성을 멤버 속성으로 포함해야 함.
- ex)
class 클래스명 implements 인터페이스 이름 {
...
}
interface IPerson4 {
name: string
age?: number
}
class Person4 implements IPerson4 {
constructor(public name:string, public age?: number) {}
}
let jack4: IPerson4 = new Person4('Jack', 32)
console.log(jack4) // Person4 { name: 'Jack', age: 32 }
추상 클래스
- class 키워드 혹은 자신의 속성이나 메서드 앞에 abstract를 붙여 상속하는 다른 클래스에서 구현
- ex)
abstract class 클래스명 {
abstract 속성 이름: 속성 타입
abstract 메서드 이름() {}
}
abstract class AbstractPerson5 {
abstract name: string
constructor(publice age?: number){}
}
클래스의 상속
- extends 키워드를 통해 부모 클래스를 상속 받음
- ex)
class 상속 클래스 extends 부모 클래스 { ... }
class Person5 extends AbstractPerson5 {
// class Person5 extends APerson5 {
constructor(public name:string, age?: number) {
super(age)
}
}
let jack5 : Person5 = new Person5('Jack',32)
console.log(jack5)
static 속성
- 클래스의 인스턴스 없이 호출이 가능함 즉, 정적 속성을 가질 수 있음
- ex)
class 클래스 이름 {
static 정적 속성 이름: 속성 타입
}
class A {
static initValue = 1
}
let initVal = A.initValue // 1
타입 단언 (type assertion)
- 특정 타입의 변숫값을 다른 타입의 값으로 변환
- 자바스크립트의 타입 변환 구문과 구분하기 위해 타입 단언이라는 용어 사용
- ex)
1.(<타입> 객체)
2.(객체 as 타입)
두 가지 구문의 결과는 같음.
interface INameable {
name: string
};
let obj: object = {name: 'Jack'}
let name1 = (<INameable>obj).name
let name2 = (obj as INameable).name
console.log(name1, name2)
Reference : 전예홍, 『Do it! 타입스크립트 프로그래밍』, 이지스퍼블리싱(2020), p66-77.
Author And Source
이 문제에 관하여(타입스크립트 객체와 클래스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qmasem/TLI-타입스크립트-객체와-클래스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)