2016-08-02 3 views
0

Я хочу, чтобы это свойство generic реализовало в TypeScript. Мой текущий код:Force generics реализует свойство в TypeScript (ограничения на generics)

interface IEventHandler<TArgs> 
{ 
    (args: TArgs): void 
} 


interface ISubscribable<THandlerType> 
{ 
    bind(fn: THandlerType): void; 

    unbind(fn: THandlerType): void; 
} 

interface IEvent<TArgs> extends ISubscribable<IEventHandler<TArgs>> 
{ 
} 

Что-то вроде interface IEventHandler<TArgs> where TArgs : has_property_sender. Я знаю, где не существует для TypeScript, так что, возможно, я могу получить обходной путь с другим интерфейсом?

Возможно ли это в TypeScript?

Отредактировано:
Code if it helps someone else. Я не знаю, можно ли его оптимизировать.

ответ

1

Вы можете использовать constraints (раздел "Generic Constraints") в машинописном, например .:

interface has_property_sender { 
    sender: Object; 
} 

interface MyArgs extends has_property_sender { 
    property: Object; 
} 

interface IEventHandler<TArgs extends has_property_sender> 
{ 
    (args: TArgs): void 
} 
+0

Спасибо. Мне удается это сделать через несколько часов, и ваш ответ, который распространяется, правильный путь (это мой третий день на TypeScript). Я уже пробовал ваш подход, но мог бы получить отправителя типа generics. Если у вас есть время, не могли бы вы посмотреть одним глазом в нижней части моего кода, если бы его можно было оптимизировать. Есть комментарий с несколькими вопросительными знаками. – Makla

+1

@Makla - Я проверил ваш код и не нашел способ «удалить Edit» на данный момент ... – TSV