项目信息
我正在开发一个使用.d.ts
文件的JavaScript项目。这是之前我提出问题的后续,你可以通过这里查看有关该项目的更多信息。
问题
虽然我通常可以从类型定义文件中提取函数,但无法提取空或纯由接口组成的命名空间或接口。我通过为每个接口创建一个const
实现并在注释中使用@typeof ConstantImplementation
来临时解决了这个问题。参见下面的示例:
// Typings File
export namespace test {
export interface ITest {
foo: string;
bar: number;
}
export const Test: ITest;
}
// JS File
if (undefined) var {Test: ITest} = require("globals.d.ts").test;
// Above line shows `unused var error`
/* @type {typeof ITest} */
var x = {};
x.foo = "hello";
x.bar = 3;
// if I do `x.` intellisense should suggest `foo` and `bar`
我想知道是否有更好的解决问题的方法,最好不会出现错误(使用eslint ignore line
并不能解决问题)。
澄清
这个问题不是关于从类型文件中获取功能。它纯粹是关于使VSCode智能提示与类型接口一起工作。下面的图片解释了我想要的内容(圆圈内的两行代码):
export namespace as randomName
。因此,如果你只是在第一个示例中添加了export namespace as randomName
,那么你就可以执行@typedef {import("./test")} JSDoc
,然后/** @type {JSDoc.test.ITest} */
。 - nick zoum