【问题标题】:Create typings for pre-instantiated class为预实例化的类创建类型
【发布时间】:2020-11-08 12:51:59
【问题描述】:

我有一个来自我安装的依赖项 text-readability 的 javascript 文件,其中包含以下代码:

const readability = new Readability()
module.exports = readability

如何为此生成 Typescript 类型?文档内容广泛但过于复杂,似乎没有解决这个用例。

我在任何地方都找不到如何键入这样一个已经实例化的对象的示例。

还不清楚如何调用此类型文件或将其放在我自己的项目中的什么位置。

【问题讨论】:

  • 这能回答你的问题吗? typescript declare third party modules
  • 也许吧,但对于本应简单的事情来说,它太迟钝了?比如:我把文件放在哪里?甚至那里的类不是在模块中创建的,而是在导入后可以创建的?
  • 如果这是您为消费者输入的代码,.d.ts 文件与它引用的 Javascript 文件位于同一目录中。如果它是您尝试在 Typescript 项目中使用的第三方库,则它位于 @types 目录中。并且导出的类型为 Readability。
  • 谢谢,但还是很不清楚。那我现在只能和any一起生活了。
  • 然后是的,您需要在您的项目@types 中创建一个目录,并在其中为您要为其添加类型的特定库创建一个子目录。然后您需要该目录中的 index.d.ts 文件。在您的具体情况下,它将包含类似declare class Readability blah blah; declare const readability: Readability; export default readability; 的内容,这完全被我链接的副本中引用的official documentation for module declarations 所涵盖。

标签: typescript typescript-typings


【解决方案1】:

完全不明显如何做到这一点,但经过一堆反复,这里是完整的解决方案,无疑也会帮助其他人。

src/ 中名为 text-readability.d.ts 的文件:

declare module 'text-readability' {
    class Readability {
        textStandard(text: string, floatOutput?: boolean): string | number;
    }

    const readability: Readability;

    export = readability;
}

然后在 Typescript 文件本身中,进行以下导入即可:

/// <reference path="text-readability.d.ts"/>
import { readability } from "text-readability";

【讨论】:

  • 不得不从一个三年前的 Github 问题中挖掘出export = readability;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多