我有一个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不会选择定义。
我尝试在my-class.js
的顶部添加参考注释,但没有效果(my-class.js
)。
我在我的设置中将///<reference path="./my-class.d.ts" />
选项设置为checkJs
。
我正在使用VS Code Version 1.19.1
我需要采取其他措施才能实现这一目标吗?
答案 0 :(得分:1)
确保您的工作文件夹中有 jsconfig.json 文件。获得此配置文件后,应包含 .d.ts 文件。
关于你的具体例子,据我所知,它不能像你期望的那样工作。这是因为申报范围。意思是,在您的 .d.ts 文件中,您使用TypeScript类型定义MyClass,然后在您的 .js 文件中定义第二个MyClass,第二个声明也有类型,它有默认类型的任何。如果你继承了第一堂课,那么它可能会像你期望的那样工作。
话虽如此,有些事情会奏效:
示例:
我-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 实例上,您会发现自己确实获得了正确的智能感知
添加JSDoc评论&#34; @param {选项}选项&#34;在构造函数()中,您还将获得正确的IntelliSense
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