网站搜索

node.js - typescript:使用 'export =' 语法时导出类型


我需要在一个使用 TypeScript export = 语法的代码库中添加一个功能。该代码导出一个函数并向其添加属性:

const f = () => {};
f.someVal = 123;
f.someFunc = () => {};
export = f;

因此用户可以以 CommonJS\ES 风格直接导入该函数:

const f = require('./my_module');
import f from './my_module'; // with esModuleInterop: true

但他也可以在需要时导入这些属性:

import { someVal, someFunc } from './my_module';

我也想导出一个类型,例如,这个模块的用户应该能够:

import type { SomeInterface } from './my_module';

我如何使用 TypeScript 的 export = 语法导出一个类型?

答案#1

你可以使用命名空间来做到这一点:

namespace f {
  export const someVal = 123;
  export const someFunc = () => {};

  export type Test = { hello: string };
}
export = f;

编辑:我刚刚意识到你想做的事情是不可能的。你不能在常量上使用类型。在 GitHub 上已经有一个相关问题(https://github.com/microsoft/TypeScript/issues/18163),但是还没有实现。