合并名称空间和variables的声明
我正在尝试为第三方库node-tap
创build声明文件。 简化的问题是:对于图书馆
// node_modules/a/index.js function A() { /* ... */ } module.exports = new A(); module.exports.A = A;
什么是一个正确的*.d.ts
声明文件,以允许下面的代码编译成功?
// test.ts import * as a from 'a'; import {A} from 'a'; function f(): A { return a; }
提到将A
作为types是重要的,尽pipe在这个简单的例子中可以省略它。
如果您需要能够调用new aA()
,请执行以下操作:
declare class A { A: typeof A; } declare const a: A; declare namespace a { export type A = A; } export = a;
如果您只需要typesaA
可访问,请执行以下操作:
declare const a: aA; declare namespace a { interface A {} } export = a