【问题标题】:TypeScript - how to write a declaration file for a third party package with a single global function?TypeScript - 如何为具有单个全局函数的第三方包编写声明文件?
【发布时间】:2018-04-27 22:33:48
【问题描述】:

我正在尝试为第三方包 (latex) 编写声明文件。 该包导出单个全局函数latex()。我尝试使用以下声明文件(src/@types/latex/index.d.ts):

declare module 'latex' {
    import { Stream } from "stream";
    export function latex(latex: string | string[] | Buffer | Stream): Stream
}

现在我正在尝试像 import * as latex from 'latex' 这样导入乳胶,但编译器强制我调用 latex.latex() 而不仅仅是 latex()

我该如何解决这个问题?

谢谢。

【问题讨论】:

    标签: typescript


    【解决方案1】:
    export default function latex()
    

    这是 ES6 模块语法。但是latex模块的原始代码使用的是commonjs模块语法。因此声明文件应该是

    export = function latex()
    

    在 TypeScript 中也应该使用 commonjs 方式导入

    import latex = require('latex')
    

    【讨论】:

      【解决方案2】:

      如果函数是默认导出,可以在定义文件中添加default关键字:

      export default function latex(...
      

      然后你可以像这样导入并使用它:

      import latex from 'latex';
      
      latex(args);
      

      【讨论】:

      • 编译现在可以工作,但生成的代码如下所示:const latex_1 = require("latex"); 然后latex_1.latex(...
      猜你喜欢
      • 2018-03-11
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 2023-04-01
      • 2020-02-19
      相关资源
      最近更新 更多