Javascript 类未在 Visual Studio Code 中获取 TypeScript 声明文件

标签 javascript typescript visual-studio-code commonjs typescript-declarations

我有一个 Typescript/JavaScript 混合项目,我正在创建声明 d.ts一些 JavaScript 文件的文件,以帮助管理多个类和子类。

但是,Visual Studio Code 看不到声明的类型。我有 js和相应的d.ts同一目录中的文件。

例如:

我的类.js

class MyClass {
  constructor(options) {}

  action(num) {
    return num.toString()
  }
}

my-class.d.ts

export interface Options {
  a: boolean
  b: boolean
}

export declare abstract class MyClass {
  constructor(options: Options)
  action(num: number): string
}

IntelliSense 不获取定义,例如,当我将鼠标悬停在 action 上时my-class.js的方法| .

enter image description here

我试过在 my-class.js 的顶部添加引用注释没有效果(///<reference path="./my-class.d.ts" />)。

我有 checkJs选项设置为 true在我的设置中。

我正在使用 VS Code 版本 1.19.1

我是否需要采取其他措施才能使其发挥作用?

最佳答案

确保您的工作文件夹中有一个 jsconfig.json 文件。在你有了这个配置文件之后,你的 .d.ts 文件应该被包含/引用。

enter image description here

关于您的具体示例,据我所知,它不会像您期望的那样工作。这是因为声明范围。意思是,在你的 .d.ts 文件中你定义了一个带有 TypeScript 类型的 MyClass,然后在你的 .js 文件中你定义了第二个 MyClass,第二个声明也有类型,它有默认类型 any。如果您是从第一个类继承的,那么它可能会像您期望的那样工作。

话虽这么说,有些事情会奏效:

  • 您应该在类的实例上获得 IntelliSense
  • 您可以将 JSDoc 注释添加到您的 .js 文件以定义/链接 .d.ts 类型

例子:

my-class.d.ts

declare interface Options {
    a: boolean
    b: boolean
}

declare class MyClass {
  constructor(options: Options)
  action(num: number): string
}

我的类.js

class MyClass {
  /**
  * @param {Options} options 
  */
  constructor(options) {   
  }

  action(num) {
    return num.toString();
  }
}
var foo = new MyClass({ a: true, b: false } );
foo.action(88);

如果您将鼠标悬停在 .js 文件中的 foo 实例上,您会发现您确实获得了正确的 IntelliSense

enter image description here

通过将 JSDoc 注释“@param {Options} options”添加到 constructor() 中,您还将获得正确的 IntelliSense

enter image description here

JSDoc 和 TypeScript:https://github.com/Microsoft/TypeScript/wiki/JsDoc-support-in-JavaScript VSCode 和类型检查:https://code.visualstudio.com/docs/languages/javascript#_global-variables-and-type-checking

关于Javascript 类未在 Visual Studio Code 中获取 TypeScript 声明文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48099840/

相关文章:

javascript - c3 图表中的图表 X 轴刻度

typescript - 对象字面量出现“不可分配给类型参数”错误

javascript - 'useState' 未定义 no-undef React

javascript - 如何在 Backbone 事件对象中使用变量?

javascript - 自定义组件 Angular 所需的传递

vue.js - 在 VScode 和 Chrome 中调试 Vue,未绑定(bind)断点

ruby - Visual Studio 代码 : Disabling Error/Warning checks in for specific file type

visual-studio-code - 如何在Visual Studio Code的所有项目文件中的光标下快速搜索符号

javascript - Ractive.js 事件代理中 jQuery 的 $(this) 的等价物

javascript - 如何在 react-redux-typescript 中传递 props