打字稿输入:具有属性的函数

时间:2014-04-25 14:01:06

标签: typescript

我试图为Yargs js库编写一个Typescript decleration文件。

如何使用双重行为编写外部模块的环境类型减少...

require('yargs').argv

和......

require('yargs')([ '-x', '1', '-y', '2' ]).argv

3 个答案:

答案 0 :(得分:0)

declare module "foo" {
    function M(argArray: any[]): typeof M;
    module M {
        export var argv;
    }

    export = M;
}

答案 1 :(得分:0)

这个很棘手。需要一些思考。

declare module yargs {
    export interface Yargs {
        argv: string[];
        (input: string[]): Yargs;
        count(option: string): Yargs;
        alias(shrt: string, lng: string): Yargs;
    }
}

declare module "yargs" {
    var y: yargs.Yargs;
    export = y;
}

答案 2 :(得分:-1)

只需将功能导出为导出的模块。

例如:

// foo.js

function foo(args) {
  return {
    get: function() { return args; }
    size: args.length
  };
};

foo.bar = 'bar';

module.exports = foo;

// Example node usage.
require('./foo.js').bar // => 'bar'
f = require('./foo.js')([1,2,3]);
f.get(); // => [1,2,3]
f.size; // => 3