2017-02-17 4 views
0

:타이프 라이터 일반적인 기본 클래스 I는 일반적인 기본 이벤트 클래스를 만들려고하고

class ExtraSpecialEvent 
    extends BaseEvent<{ (foo: string): void }> { 

} 
:

class BaseEvent<T extends { (args?: any[]): void }> { 
    addEventListener(listener: T): {(): void } { 
     return() => { }; 
    } 
} 

내가 지정하는 확장 할 수있는을 콜백의 매개 변수를 제한

하지만 구문을 이해하는 것 같습니다. Here is a playground demonstrating my problem.

어떤 방법을 생각 하나?

---- UPDATE ---- @ 무라트을-K 아래 대답

으로,이 내 질문이 요구하시는 동안 내 일반이는 내가 의미하지 무슨 ... 배열을 요구한다. 내 의도는 0 개 이상의 any args 허용하는 것입니다. 당신은 배열 형식으로 args 선언하는

class BaseEvent<T extends { (...args: any[]): void }> { 
    addEventListener(listener: T): {(): void } { 
     return() => { }; 
    } 
} 

답변

1

: 내 문제에 대한 해결책으로 일반을 변경했다. 예 : 배열로 전달해야합니다.

class ExtraSpecialEvent 
    extends BaseEvent<{ (foo: string[]): void }> { 

} 
+0

네, 맞습니다. 나는 이것을 답으로 표시 할 것이다 ... 비록 그것이 틀린 질문을하고있는 것으로 판명되었지만 ... 나는 0 개 이상의 args를 지정하는 능력을 정말로 원했다 ...이 대답은 나를 올바른 길로 보내었다. – Lucas

+0

@ 루카스 당신은'...'rest 매개 변수를 사용할 수 있습니다. 예를 보려면 http://stackoverflow.com/questions/12697275/open-ended-function-arguments-with-typescript를 참조하십시오. –