【问题标题】:Typescript: Import default from CommonJS module, export additional type from typing fileTypescript:从 CommonJS 模块导入默认值,从输入文件中导出其他类型
【发布时间】:2016-04-07 20:45:57
【问题描述】:

旧版 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??
}

消费者 app.ts:

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

【问题讨论】:

    标签: javascript typescript ecmascript-6


    【解决方案1】:

    如何从 lib.d.ts 获取类型?

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

    【讨论】:

    • 查看代码示例。 export = ... 只允许单个导出 - 如何使用该语法导出 1 个函数和 1 个类型?
    • @bcherny 你在 interface 上有export =。这无论如何都是无效的
    【解决方案2】:

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

    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'
    

    【讨论】:

      猜你喜欢
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多