首页 > 解决方案 > 如何导入 index.d.ts 中定义的命名空间

问题描述

尝试将 xmlbuilder 导入到我的打字稿类

import { xmlbuilder } from "xmlbuilder/typings/index";

我有

错误:(2, 10) TS2305:模块 '../node_modules/xmlbuilder/typings/index"' 没有导出的成员 'xmlbuilder'。

在 index.d.ts ( https://github.com/oozcitak/xmlbuilder-js/blob/master/typings/index.d.ts ) 中,

export = xmlbuilder;

declare namespace xmlbuilder { 
  ...
}

标签: typescript

解决方案


许多人不推荐命名空间,在这种情况下,使用模块定义会更有意义。

这是这样写的:

declare module 'xmlbuilder' {
  // export types that describe the module here
}

现在,当您导入时,xmlbuilder它应该自动具有正确的类型(前提是您已正确配置 tsconfig)。

您需要typeRoots在 tsconfig.xml 中定义自定义路径(类型声明的目录)。

typeRoots可以在此处找到有关定义的更多信息。

您可以在此处阅读有关名称空间和模块声明之间差异的更多信息。


推荐阅读