如何在vscode中引用内联脚本中的类型定义?

时间:2018-01-26 10:57:15

标签: javascript typescript visual-studio-code tslint

index.html文件中,我正在使用ts类型检查。这适用于内联JSDoc声明,即。 vscode正确显示无效的类型分配:

<script>
// @ts-check

/**
 * @typedef {Object} SpecialType - a new type
 * @property {number} prop1 - a number
 */

/** @type {SpecialType} */
const x = { prop1: 'invalid number' }; // <-- vscode shows the type error
</script>

有没有办法将该类型定义提取到外部文件中并将其导入index.html,或者让vscode全局知道该类型?

我尝试了以下操作,但在所有情况下,vscode在index.html中使用时都缺少该类型:

  • 创建一个外部types.js文件,该文件只包含JSDoc typedef注释并通过<script src="..."></script>
  • 导入
  • 创建一个外部types.html文件,其中包含带有JSDoc typedef注释的脚本块,并通过<link rel="import" href="...">
  • 导入该文件
  • 创建具有相应类型的global.d.ts文件,并使用/// <reference path="..." />
  • 将其导入

1 个答案:

答案 0 :(得分:0)

尝试创建一个typings文件夹,比如说,typings/global到项目的根目录。然后,创建一个包含ts声明的index.d.ts文件,并将其放在global文件夹中。

tsconfig.json

"typeRoots": [
    {
       "./node_modules/@types"
       "./typings"
    }
],
"types": [
    "global",
    ...
]

注意 Documentation

  

如果指定了typeRoots,则只包含typeRoots下的包