2017-12-06 20 views
0

두 모델 Model과 해당 하위 클래스 ClientModel이 주변 모듈입니다. 이제 Client이라는 인터페이스에서 ClientModel이라는 속성 집합을 선언하고 싶습니다. 내가 어떻게 해? 다음과 같이 상상할 수 있습니다.Typescript 선언 : 클래스와 인터페이스를 병합하십시오.

interface Client { 
    name: string; 
    email: string; 
} 

declare class ClientModel extends Model implements Client { 
    // with name and email here without redeclare them 
} 

답변

2

선언문 병합을 사용할 수 있습니다. 클래스와 인터페이스가 동일한 네임 스페이스/모듈에서 선언되고 동일한 이름을 가진다면, 이들은 단일 클래스 유형으로 병합됩니다.

당신이 인터페이스를 변경할 수 없습니다 또는 다른 네임 스페이스에 선언하고 병합 된 인터페이스에서 상속 할 수 이동할 수없는 경우
interface ClientModel { 
    name: string; 
    email: string; 
} 

class ClientModel extends Model { 
    m() { 
     this.email //Valid 
    } 
} 

:

interface Client { 
    name: string; 
    email: string; 
} 

interface ClientModel extends Client {} 
class ClientModel extends Model { 
    m() { 
     this.email //Valid 
    } 
} 
+1

완벽! Thanks @Titian –

+0

Hello @Titian, 새로운 질문을해야하는지 알려주세요. 기본 모델에 정적 속성을 추가 할 수있는 방법이 있습니까? 선언을 병합하려고 할 때 TS2300이 있습니다 ... –

+0

언제 오류가 발생합니까? 정적 속성을 추가하려고 할 때? 병합은 일부 경우에만 작동하며 interface + class는 하나이고 class + class는 작동하지 않으며 인터페이스는 정적을 가질 수 없습니다 –