반응형
TypeScript 제네릭에 대해 여러 유형 제약 조건을 지정할 수 있습니까?
단일 유형 제약 조건이있는이 예제와 같은 일반 인터페이스가 있습니다.
export interface IExample<T extends MyClass> {
getById(id: number): T;
}
하나가 아닌 여러 유형 제약 조건을 지정할 수 있습니까?
Typescript는 Union 유형 및 Intersection 유형을 지원합니다. 귀하의 경우에는 교차로를 원합니다.
interface Example<T extends MyClass & OtherClass> {}
두 유형의 Union의 경우 :
interface Example<T extends MyClass | OtherClass> {}
이에 대한 해결 방법은 수퍼 인터페이스를 사용하는 것입니다 ( "인터페이스가 클래스에서 상속하도록 허용하는 이유"라는 질문에도 답).
interface ISuperInterface extends MyClass, OtherClass {
}
export interface IExample<T extends ISuperInterface> {
getById(id: number): T;
}
클래스에서 파생 된 인터페이스에 대한 주석을 참조하십시오. 이름은 무엇입니까?
0.9.0 사양의 섹션 3.5에서이를 찾았습니다.
인터페이스 선언은 명명 된 유형 만 도입하는 반면, 클래스 선언은 명명 된 유형의 구현 인스턴스를 만드는 명명 된 유형 및 생성자 함수를 도입합니다. 클래스 및 인터페이스 선언에 의해 도입 된 명명 된 유형은 사소한 차이 만 있으며 (클래스는 선택적 멤버를 선언 할 수없고 인터페이스는 개인 멤버를 선언 할 수 없음) 대부분의 컨텍스트에서 상호 교환이 가능합니다. 특히 공용 멤버 만있는 클래스 선언은 인터페이스 선언으로 만든 것과 똑같은 기능을하는 명명 된 유형을 도입합니다.
반응형
'Program Tip' 카테고리의 다른 글
HTML 다중 선택 상자 (0) | 2020.11.21 |
---|---|
런처에서 아이콘을 눌러 시작하면 앱이 완전히 다시 시작됩니다. (0) | 2020.11.21 |
Python에서 텍스트 파일의 특정 줄 편집 (0) | 2020.11.20 |
메서드에는 "String method ()… [etc]…"서명이 있어야하지만 "void method ()"서명이 있어야합니다. (0) | 2020.11.20 |
Ruby Activerecord IN 절 (0) | 2020.11.20 |