VSCODE智能感知来自何处?

时间:2018-06-26 03:42:48

标签: javascript visual-studio-code jsdoc javascript-intellisense

在VSCODE中,我看到以下智能提示:

enter image description here

在探索node_modules/sanctuary/index.js时,我发现了一个函数toMaybe,但是由于它们不匹配,所以似乎没有定义是从这里来的

//# toMaybe :: a? -> Maybe a
//.
//. Takes a value and returns Nothing if the value is `null` or `undefined`;
//. Just the value otherwise.
//.
//. ```javascript
//. > S.toMaybe (null)
//. Nothing
//.
//. > S.toMaybe (42)
//. Just (42)
//. ```

这与通常这样显示的其他功能相反:

enter image description here

两个问题:

  1. 我下一步应该去哪里?
  2. 我该如何记录自己的功能?

更新:

Lukas Bach和ippi指出,Sanctuary.Static.toMaybe<A>(p: A): Maybe<A>的一部分来自自动类型获取功能。

即使从@types删除了所有~/Library/Caches/typescript/2.9/node_modules/types-registry,我仍然看到一些文档。

enter image description here

我也无法在toMaybe :: a -> Maybe a文件或@types/sanctuary/index.d.ts目录中的任何位置找到文本@types

1 个答案:

答案 0 :(得分:2)

编程语言TypeScript是JavaScript的超集,它允许为函数和变量上的正确类型定义。可以将TypeScript编译为JavaScript,从而删除所有类型注释,并且可以在编译过程中导出单独的类型定义文件(* .d.ts)。如今,通常直接在模块存储库本身中或作为DefinitelyTyped存储库的一部分为JS模块提供TypeScript类型定义。

要为您自己的代码获取此类类型注释,您可以首先在TypeScript中编写代码,也可以自己编写其他自定义类型定义文件。

这不是编写类型定义的唯一方法,而是目前最突出的一种方法。

编辑:好的,我没有真正研究您之前提到的软件包。但是我已经尝试过了,这就是它给我的IntelliSense注释。VS Screenshot

这似乎来自TS键入:

toMaybe<A>(p: A | null | undefined): Maybe<A>;

这些类型位于https://www.npmjs.com/package/@types/sanctuary