Javascript类没有在Visual Studio Code中拾取TypeScript声明文件

时间:2018-01-04 16:45:29

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

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

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

例如:

我-class.js

class MyClass {
  constructor(options) {}

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

}

我-class.d.ts

export interface Options {
  a: boolean
  b: boolean
}

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

当我将鼠标悬停在action的{​​{1}}方法上时,IntelliSense不会选择定义。

enter image description here

我尝试在my-class.js的顶部添加参考注释,但没有效果(my-class.js)。

我在我的设置中将///<reference path="./my-class.d.ts" />选项设置为checkJs

我正在使用VS Code Version 1.19.1

我需要采取其他措施才能实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

确保您的工作文件夹中有 jsconfig.json 文件。获得此配置文件后,应包含 .d.ts 文件。

enter image description here

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

话虽如此,有些事情会奏效:

  • 您应该在课程实例
  • 上获得IntelliSense
  • 您可以将JSDoc评论添加到 .js 文件中,以定义/链接 .d.ts 类型

示例:

我-class.d.ts

declare interface Options {
    a: boolean
    b: boolean
}

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

我-class.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 实例上,您会发现自己确实获得了正确的智能感知

enter image description here

添加JSDoc评论&#34; @param {选项}选项&#34;在构造函数()中,您还将获得正确的IntelliSense

enter image description here

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