打字稿:从CommonJS模块导入默认值,从输入文件导出其他类型

时间:2016-04-07 20:45:58

标签: javascript typescript ecmascript-6

传统的lib.js:

function Foo () {...}
Foo.a = function() {...}
module.exports = Foo

键入lib.d.ts:

declare module "foo" {
  type Type = "a"|"b"|"c"
  interface Foo {
    (a: Type): string
    ...
  }
  export = Foo
  // how do i export Type??
}

消费者应用程序:

import Foo = require('foo')
// how do i get Type from lib.d.ts??

2 个答案:

答案 0 :(得分:0)

  

如何从lib.d.ts获取Type?

如果未导出,则无法获取。

答案 1 :(得分:0)

这是一个非常老的问题,但我需要自己回答。如果在这种情况下,“ Foo”是默认的modules.exports,则可以在模块声明中的export default上使用Foo

declare module "foo" {
  export type Type = "a"|"b"|"c" // export any custom types you like

  export default interface Foo { // default works
    (a: Type): string
    ...
  }
}

然后在其他地方可以做:

import Foo, { Type } from 'foo'