我目前正在尝试为名为 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 关键字。特别是因为它必须返回无效。
非常感谢任何帮助或建议。
提前致谢。
两个库的链接: