https://typescript-kr.github.io/pages/Interfaces.html
알짜배기만 정리
- readonly vs const
- 변수는 const를 사용하는 반면 프로퍼티는 readonly를 사용합니다.
- 인덱싱 가능 타입을 만들면?!
- 인덱싱 종류는 두 가지이며 그중 하나만 이용하고 하위 호환되는 타입의 인덱스여야 한다!
class Animal {
name: string;
}
class Dog extends Animal {
breed: string;
}
// 오류: numeric과 string으로 인덱싱하면 완전히 다른 타입의 Animal을 얻을 수 있습니다!
interface NotOkay {
[x: number]: Animal;
[x: string]: Dog;
}
- 올바른 생성자 시그니처 확인
- 갸~꿀
interface ClockConstructor {
new (hour: number, minute: number): ClockInterface;
}
interface ClockInterface {
tick();
}
function createClock(
ctor: ClockConstructor,
hour: number,
minute: number
): ClockInterface {
return new ctor(hour, minute);
}
class DigitalClock implements ClockInterface {
constructor(h: number, m: number) {}
tick() {
console.log("beep beep");
}
}
class AnalogClock implements ClockInterface {
constructor(h: number, m: number) {}
tick() {
console.log("tick tock");
}
}
let digital = createClock(DigitalClock, 12, 17);
let analog = createClock(AnalogClock, 7, 32);
let analog2 = createClock(AnalogClock, 'a', 32);
- 인터페이스 확장 클래스
- 컴파일러 : 마! 접근 못 하는 곳은 어떻게 하라고?! 빼액
class Control {
private state: any;
}
interface SelectableControl extends Control {
select(): void;
}
class Button extends Control implements SelectableControl {
select() {}
}
class TextBox extends Control {
select() {}
}
// 오류: 'Image' 타입의 'state' 프로퍼티가 없습니다.
class Image implements SelectableControl {
select() {}
}
class Location {}
'Javascript > Typescript' 카테고리의 다른 글
타입스크립트 튜토리얼 - 리액트 & 웹펙 묶기 (0) | 2020.01.30 |
---|---|
타입스크립트 핸드북 - 클래스 (0) | 2020.01.30 |
타입스크립트 핸드북 - 변수선언 (0) | 2020.01.29 |
타입스크립트 핸드북 - 기본 자료형 (0) | 2020.01.26 |
5분 안에 Typescript 맛보기 (0) | 2020.01.26 |