现有 javascript 库的最小打字稿定义

Minimal typescript definition for existing javascript library

我想使用 neat-csv 库,但它不提供打字稿定义文件。几篇博客提到了一种快速创建最小定义文件的方法:

declare var neatCsv: any;

但我不知道如何处理定义文件。它应该位于哪里?您如何 link 具有位于 node_modules/neat-csv 中的实际实现的定义文件。那么如何将它导入到实际的打字稿文件中呢?

包使用了以下模块导入语法:

const neatCsv = require('neat-csv');

这意味着这种模块是您不需要使用默认导出 export default x 的导出 { x }。您需要的是:

declare module "neat-csv" {
    var neatCsv: (input: any, options?: any) => Promise<any>;
    export = neatCsv;
}

您可以将上述代码复制到 src 文件夹中名为 declarations.d.ts 的文件中。然后,您就可以按如下方式导入和使用它了:

import * as neatCsv from "neat-csv";

let csv = "type,part\nunicorn,horn\nrainbow,pink";
neatCsv(csv, { /* options */ });