0

我目前正在尝试为名为 markdown-it-meta 的 Markdown-it 插件库创建类型声明文件。

markdown-it 类有一个名为 use 的函数,它基本上接收一个回调函数,然后改变 this 关键字并返回 void。(我理解代码的方式)。

问题在于,提供上述回调函数的库实际上向 this 对象添加了一个新属性。

现在我正在寻找一种方法来正确更新 this 关键字,每当我调用 use 函数时。

这是一个例子:

const parser = new MarkdownIt({html:true});
parser.use(meta)

const buffer = fs.readFileSync('test.md', 'utf-8');
const post = parser.render(buffer);
const metaData = parser.meta; <- **THIS GIVES ERROR**

到目前为止我所拥有的:

// FROM markdown-it lib's own declaration file as a reference for the code below
//    type PluginSimple = (md: MarkdownIt) => void;

// what I have 
// -- markdown-it-meta.d.ts
declare module 'markdown-it-meta' {
    import {PluginSimple} from 'markdown-it'

    const metaPlugin: PluginSimple
    export default metaPlugin;
}

所以我有一些想法:

  • 我已经看到 markdown-it 类型声明文件有 3 种不同的函数重载类型,它们都返回 this。也许我可以做一个新的重载,每当我们采用 markdown-it-meta-plugin-function 类型的函数时,它都会返回 this & {meta: T}。但是我会把这些放在哪里以及如何放置?
  • 我的另一个想法是在markdown-it-meta.d.ts 中创建一种新类型的metaPlugin,但是我看不到如何在函数内改变this 关键字。特别是因为它必须返回无效。

非常感谢任何帮助或建议。

提前致谢。

两个库的链接:

4

0 回答 0