Typescript: Overloading event handlers









up vote
0
down vote

favorite












I am trying to extend an existing interface to add additional event handlers. The interface I am extending already has several event handlers defined.



Here is the base interface:



export interface Emitter 

on(event: 'connect', listener: (err: Error) => void ):this;

on(event: 'end', listener: () => void ):this;



Here is also the base class:



export class Emitter extends events.EventEmitter 


Here is my interface:



export interface EmitterExtended extends Emitter 
on(event: 'status', listener: (status: ConnectionStatus) => void ):this;
status?: ConnectionStatus;



And here is the error typescript gives:



Interface 'EmitterExtended' incorrectly extends interface 'Emitter'.
Types of property 'on' are incompatible.









share|improve this question



























    up vote
    0
    down vote

    favorite












    I am trying to extend an existing interface to add additional event handlers. The interface I am extending already has several event handlers defined.



    Here is the base interface:



    export interface Emitter 

    on(event: 'connect', listener: (err: Error) => void ):this;

    on(event: 'end', listener: () => void ):this;



    Here is also the base class:



    export class Emitter extends events.EventEmitter 


    Here is my interface:



    export interface EmitterExtended extends Emitter 
    on(event: 'status', listener: (status: ConnectionStatus) => void ):this;
    status?: ConnectionStatus;



    And here is the error typescript gives:



    Interface 'EmitterExtended' incorrectly extends interface 'Emitter'.
    Types of property 'on' are incompatible.









    share|improve this question

























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I am trying to extend an existing interface to add additional event handlers. The interface I am extending already has several event handlers defined.



      Here is the base interface:



      export interface Emitter 

      on(event: 'connect', listener: (err: Error) => void ):this;

      on(event: 'end', listener: () => void ):this;



      Here is also the base class:



      export class Emitter extends events.EventEmitter 


      Here is my interface:



      export interface EmitterExtended extends Emitter 
      on(event: 'status', listener: (status: ConnectionStatus) => void ):this;
      status?: ConnectionStatus;



      And here is the error typescript gives:



      Interface 'EmitterExtended' incorrectly extends interface 'Emitter'.
      Types of property 'on' are incompatible.









      share|improve this question















      I am trying to extend an existing interface to add additional event handlers. The interface I am extending already has several event handlers defined.



      Here is the base interface:



      export interface Emitter 

      on(event: 'connect', listener: (err: Error) => void ):this;

      on(event: 'end', listener: () => void ):this;



      Here is also the base class:



      export class Emitter extends events.EventEmitter 


      Here is my interface:



      export interface EmitterExtended extends Emitter 
      on(event: 'status', listener: (status: ConnectionStatus) => void ):this;
      status?: ConnectionStatus;



      And here is the error typescript gives:



      Interface 'EmitterExtended' incorrectly extends interface 'Emitter'.
      Types of property 'on' are incompatible.






      typescript events interface






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 9 at 13:54

























      asked Nov 8 at 23:33









      AmunRa

      103




      103






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote



          accepted










          Found the solution here



          By declaring a module with the same name as the imported module, you can augment existing declarations



          import Observable from "./observable";
          declare module "./observable"
          interface Observable<T>
          map<U>(f: (x: T) => U): Observable<U>;



          Observable.prototype.map = function (f)
          // ... another exercise for the reader






          share|improve this answer




















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53217733%2ftypescript-overloading-event-handlers%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote



            accepted










            Found the solution here



            By declaring a module with the same name as the imported module, you can augment existing declarations



            import Observable from "./observable";
            declare module "./observable"
            interface Observable<T>
            map<U>(f: (x: T) => U): Observable<U>;



            Observable.prototype.map = function (f)
            // ... another exercise for the reader






            share|improve this answer
























              up vote
              0
              down vote



              accepted










              Found the solution here



              By declaring a module with the same name as the imported module, you can augment existing declarations



              import Observable from "./observable";
              declare module "./observable"
              interface Observable<T>
              map<U>(f: (x: T) => U): Observable<U>;



              Observable.prototype.map = function (f)
              // ... another exercise for the reader






              share|improve this answer






















                up vote
                0
                down vote



                accepted







                up vote
                0
                down vote



                accepted






                Found the solution here



                By declaring a module with the same name as the imported module, you can augment existing declarations



                import Observable from "./observable";
                declare module "./observable"
                interface Observable<T>
                map<U>(f: (x: T) => U): Observable<U>;



                Observable.prototype.map = function (f)
                // ... another exercise for the reader






                share|improve this answer












                Found the solution here



                By declaring a module with the same name as the imported module, you can augment existing declarations



                import Observable from "./observable";
                declare module "./observable"
                interface Observable<T>
                map<U>(f: (x: T) => U): Observable<U>;



                Observable.prototype.map = function (f)
                // ... another exercise for the reader







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 11 at 0:32









                AmunRa

                103




                103



























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53217733%2ftypescript-overloading-event-handlers%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                    How do I collapse sections of code in Visual Studio Code for Windows?

                    ャフサォクコ ケウ,コ,ワ メ,ロスョノ゙,クネ,フムカヤヲニ,エコ゚ツ ウイオン゙ケワサネォキモュキォウイノンコチ゚メヌナイゥフュ,カヒウネェ ネ,ホノケ,ムュキ ッボーミュハ,チ ツス ィ メウイマヤ,゙ウチ ヅ ロ,ォジヌェ ャヌット ェ,マャ,チナエヒネソキツテ トホヲヲミーァ