TypeScript (24) 썸네일형 리스트형 클래스 - 심화 - 접근자 class Shape { private _vertices: number = 3; getVertices() { console.log('Vertices getter called.'); return this._vertices; } setVertices(value) { console.log('Vertices setter called.'); this._vertices = value; } }읽기 접근을 위한 getter class Shape { constructor (public vertices: number) { } get vertices(): number { console.log('Vertices getter called.'); return 3; } } const tr.. 클래스 - 심화 - 접근 제어자 public public 멤버는 접근 제한이 전혀 존재하지 않으며, 프로그램의 어느 곳에서나 접근 가능하다. 접근 제어자가 명시되지 않은 멤버는 모두 암시적으로 public 접근 권한을 갖는다. 아래의 두 정의는 의미상 동일하다. // implicit public member class Triangle { vertices: number; constructor() { this.vertices = 3; } } // explicit public member class Triangle { public vertices: number; public constructor() { this.vertices = 3; } }private private 멤버에는 해당 클래스 내부의 코드만이 접근 가능하다. 만약 클래스 바깥에.. 클래스 - 심화 - 스태틱 멤버 지금까지 다룬 속성과 메소드는 클래스의 인스턴스 별로 각각 생성되고 관리되었다. 이와는 다르게 클래스 전체에서 공유되는 값이 필요한 경우, 스태틱 멤버(static member)를 사용할 수 있다. 스태틱 멤버에는 클래스 이름을 사용해 접근 할 수 있다. 속성 class Counter { static count: number = 0; } console.log(Counter.count); // 0메소드 class Counter { static count: number = 0; static increaseCount() { Counter.count += 1; } static getCount() { return Counter.count; } } Counter.increaseCount(); console.log(.. 클래스 - 확장 인터페이스 확장과 유사하게, 클래스 역시 extends 키워드를 사용해 기존에 존재하는 클래스를 확장할 수 있다. 클래스 A가 클래스 B를 확장 할 때, A를 B의 서브클래스(subclass) B를 A의 슈퍼클래스(superclass) 인터페이스 확장과 마찬가지로, 서브클래스는 슈퍼클래스의 멤버(속성, 메소드)를 갖는다. class Base { answer: number = 42; greetings() { console.log('Hello, world!'); } } class Extended extends Base { } const extended: Extended = new Extended(); console.log(extended.answer); // 42 extended.greetin.. 클래스 - 기초 class NothingImportant {} 이렇게 정의된 클래스는 new키워드를 이용해 인스턴스화(instantiation) 할 수 있다. 클래스는 인스턴스를 찍어내는 일종의 틀로 생각할 수 있다. const nothingImportant: NothingImportant = new NothingImportant()생성자 constructor 키워드를 사용해 클래스 생성자(class constructor)를 정의할 수 있다. 만약 어떤 클래스가 생성자를 정의하지 않았다면, 본문이 비어있는 함수가 생성자로 사용된다. (constructor() {} )객체 생성자와 유사하게, 클래스 생성자를 통해 클래스 인스턴스가 생성될 때 실행될 로직을 정의할 수 있다. class BarkingDog { construc.. 인터페이스 인터페이스의 속성을 읽기 전용 속성 또는 선택 속성으로 정의할 수 있다. interface User { name: string; readonly height: number; favoriteLanguage?: string; } const author: User = { name: '안희종', height: 176 }; // ok author.height = 183; // error TS2540: Cannot assign to 'height' because it is a constant or a read-only property.함수 인터페이스 예를 들어, User 타입의 값 user를 받아 이름을 반환하는 함수 인터페이스를 다음과 같이 적을 수 있다. interface GetUs.. 열거형 유한한 경우의 수를 갖는 값의 집합을 표현하기 위해 사용하는 열거형(enum) 타입에 대해 배운다. 숫자 열거형(Numeric Enum) 숫자 열거형은 number 타입 값에 기반한 열거형이다. 만약 열거형을 정의하며 멤버의 값을 초기화하지 않을 경우, 해당 멤버의 값은 0부터 순차적으로 증가하는 숫자 값을 갖는다. 예를 들어 아래 예제 두 예제는 동일하게 동작한다. enum Direction { East, West, South, North } enum ExplicitDirection { East = 0, West = 1, South = 2, North = 3 } 이렇게 정의한 열거형의 멤버에는 객체의 속성에 접근하는 것과 동일한 방식으로 접근할 수 있다. 어떤 열거형 `Enum`의 모든 멤버는 `Enu.. 인터섹션 타입 인터섹션 타입을 이용해 “여러 경우에 모두 해당”하는 타입을 표현할 수 있다. 문법 여러 타입을 앰퍼샌드(&) 기호로 이어서 인터섹션 타입을 나타낼 수 있다. type BeerLovingProgrammer = Programmar & BeerLover;여러 줄에 걸쳐 적은 인터섹션 타입 type BeerLovingProgrammer = Programmer & BeerLover; type BeerLovingProgrammer2 = & Programmer & BeerLover; 이전 1 2 3 다음