2017-01-18 4 views
0

У меня есть два интерфейса. Интерфейс A является общим интерфейсом, а интерфейс B - это специальное расширение, которое менее используется.Как расширить свойство на интерфейс

export interface A { 
    foo: { 
    bar1: any; 
    bar2: any; 
    } 
} 

export interface B extends A { 
    foo: { 
    bar3: any; 
    } 
    specialBar: Function 
} 

Как я могу сделать так, что B.foo наследует свойства на A.foo ('bar1', 'bar2'), а также расширение B.foo включить новое свойство ('bar3')?

Есть ли способ расширить A.foo без предоставления A.foo собственного интерфейса?

В настоящее время WebStorm выдает ошибку: Incompatible override for member from interface A.

ответ

0

Вероятно, не то, что вы действительно ищете, но есть такой хак:

const _a = undefined as A 

export interface B extends A { 
    foo: typeof _a.foo & { 
    bar3: any; 
    } 
    specialBar: Function 
} 
Смежные вопросы