commonjs - How to write a typescript definition file for a node module that exports a function? -


consider, toml node module can use:

// toml.d.ts declare module toml {     export function parse(value:string):any; }  declare module "toml" {     export = toml; } 

then:

/// <reference path="../../../../../defs/toml/toml.d.ts"/> import toml = require('toml'); toml.parse(...); 

however, node module export single function, such 'glob' (https://github.com/isaacs/node-glob).

the node usage of module be:

var glob = require("glob") glob("*.js", {}, callback(err, files) { ... }); 

you'd naively expect this:

// glob.d.ts declare function globs(paths:string, options:any, callback:{(err:any, files:string[]):void; 

...but because typescripts 'import' semantics bit strange, seems can use 'import .. = require()' statement alias modules. trying call:

/// <reference path="../../../../../defs/glob/glob.d.ts"/> import blog = require('glob'); 

results in:

error ts2072: module cannot aliased non-module type. 

so, how write definition file this?

nb. notice commonjs module using node, not amd module.

...also yes, know can breaking type system using declare, i'm trying avoid that:

declare var require; var glob = require('glob'); glob(...);  

use export =.

definition:

// glob.d.ts declare module 'glob' {     function globs(paths: string, options: any, callback: (err: any, files: string[]) => void);     export = globs; } 

usage:

/// <reference path="glob.d.ts"/>  import glob = require('glob'); glob("*.js", {}, (err, files) => { }); 

Comments

Popular posts from this blog

openid - Okta: Failed to get authorization code through API call -

thorough guide for profiling racket code -