我正在构建一个可以在JS和TS中使用的模块。
据我所知,在JS中创建模块时,请创建一个单独的d.ts
文件。(当然可以使用TS并编译为JS)。无论如何,我选择制作d.ts
文件。
例如。
// common.d.ts
declare namespace common {
export const method: string => string;
}
export = common;
下一步
// utils.d.ts
import * as u from './common';
declare namespace utils {
export const common: u // Causing an error.
}
export = utils;
我收到此错误:The namespace 'u' can not be used as a format.
我想写这个来统一导入地址。
import { common as u } from '/utils';
u.method('Any params');
我想,也许我可以从t.ds
文件中获取声明并进行分配。但是我不知道怎么做。有人帮我!
答案 0 :(得分:0)
用export const common: u
替换export const common = u
将消除错误,但仅复制u
的值含义; common.d.ts
中定义的接口和类型别名将无法通过此common
常量进行访问。 export import common = u
更好:它复制所有含义。但是大多数人会认为,删除命名空间和导出分配的毫无意义的组合,并将单个导出从命名空间移至模块的顶层,会更好。那么您可以使用ECMAScript export as
语法代替TypeScript别名。
// common.d.ts
export const method: string => string;
// utils.d.ts
import * as u from './common';
export { u as common };