如何确定@ types / node中定义的函数参数的正确类型定义?

时间:2018-09-17 13:35:16

标签: typescript

在我的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",

如何在上面的回调函数中为参数strlang标识正确的类型定义?

2 个答案:

答案 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
}
...