在我的package.json
中,我有:
"devDependencies": {
"@types/node": "^10.5.1",
在我的代码中,我有:
const hljs = require('highlight.js'); // https://highlightjs.org/
highlight: function (str:any, lang:any) {
if (lang && hljs.getLanguage(lang)) {
try {
return '<pre class="hljs"><code>' +
hljs.highlight(lang, str, true).value +
'</code></pre>';
} catch (__) {}
}
由于我相信上面的节点依赖性,Visual Studio代码自动添加了以下程序包。
"devDependencies": {
"@types/highlight.js": "^9.12.3",
如何在上面的回调函数中为参数str
和lang
标识正确的类型定义?
答案 0 :(得分:1)
@types
模块是现有模块的第三方类型定义,您可以在https://github.com/DefinitelyTyped/DefinitelyTyped/
highlight.js的专门为https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/highlight.js/index.d.ts
您的编辑器也许可以获取有关导出类型的信息-在这种情况下,highlight
函数将告诉您参数应该是什么。
通过查看GitHub上的类型定义,highlight
函数的前两个参数都是string
,因此似乎可以执行str: string, lang: string
。
答案 1 :(得分:0)
我猜你的代码有错误,对我来说这没有意义:
highlight: function // the ":" should be replaced to "=" ?
所以您要寻找的可能是这样:
import * as hljs from 'highlight.js';
...
{
highlightFn: function (name: string, value: string): hljs.IHighlightResult {
if (value && hljs.getLanguage(value)) {
try {
// return value of type "hljs.IHighlightResult" here (NOT a string)
} catch (__) {}
}
} as typeof hljs.highlight
}
...