我正在尝试为canonical-json
创建一个index.d.ts
文件。这就是我所拥有的:
declare module 'canonical-json' {
export function stringify(s: any): string;
}
也尝试过:
declare namespace JSON {
export function stringify(s:any):string;
}
export = JSON;
和
export as namespace JSON;
export const stringify: (o:any) => string;
但是我得到了
canonical_json_1.stringify不是函数
所有三种尝试。
这是堆叠闪电战: https://stackblitz.com/edit/typescript-cryptojs?file=src%2F%40types%2Fcanonical-json%2Findex.d.ts
答案 0 :(得分:1)
由于这是一个通用的js模块,因此整个导出都是一个对象,因此您可以使用特定的export =
语法:
// src\@types\canonical-json\index.d.ts
declare module 'canonical-json' {
function stringify(s: any): string;
export = stringify;
}
// index.ts
import stringify = require('canonical-json');
您还可以启用"esModuleInterop": true
作为默认导入访问导出:
// src\@types\canonical-json\index.d.ts
declare module 'canonical-json' {
function stringify(s: any): string;
export = stringify;
}
// index.ts
import stringify from 'canonical-json';
最后一个选择是使定义仅具有默认导出,您仍然需要"esModuleInterop": true
,因为模块实际上没有默认导出:
// src\@types\canonical-json\index.d.ts
declare module 'canonical-json' {
export default function stringify(s: any): string;
}
// index.ts
import stringify from 'canonical-json';
注意:我在节点中测试了所有这些配置,但我希望在其他环境中也能使用相同的配置。