Extending instance/static functions on existing prototypes with TypeScript

后端 未结 3 1493
你的背包
你的背包 2020-12-14 10:50

I recently asked a question about TypeScript\'s ability to extend existing prototypes in the JavaScript API (here: Extending Object.prototype with TypeScript).

This

3条回答
  •  天涯浪人
    2020-12-14 11:27

    The problems you are encountering are the following:

    Declarations of variables are not open like interfaces, so you can't add properties to an existing declare var ....

    Because it is declare var and not declare class you can't extend Object using inheritance.

    So you can't get the full experience from TypeScript in this scenario. You can only get the compromise of:

    Object['FooAgain'] = function () {
        alert('Again?');
    }
    
    Object['FooAgain']();
    

    If you want the full TypeScript experience, I recommend you create a class to house the static methods - they don't operate on an instance anyhow, so there is little harm in doing this:

    module Custom {
        export class Object {
            static FooAgain() {
                alert('Again?');
            }
        }
    }
    
    Custom.Object.FooAgain();
    

提交回复
热议问题