nic*_*oum 8 javascript intellisense interface visual-studio-code .d.ts
我正在开发一个利用.d.ts文件的JavaScript项目。这是我先前提出的问题的后续问题,因此您可以在此处查看有关该项目的更多信息。
尽管我通常可以从类型文件中提取函数,但是我不能提取为空或仅由接口组成的接口或名称空间。我已经通过const为每个接口创建一个实现并@typeof ConstantImplementation在注释中使用来临时解决了此问题。请参见下面的示例:
// Typings File
export namespace test {
export interface ITest {
foo: string;
bar: number;
}
export const Test: ITest;
}
Run Code Online (Sandbox Code Playgroud)
// 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`
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来解决该问题,最好是一种不会抛出错误(使用eslint ignore line不是解决方法)的方法。
这个问题与从打字文件获取功能无关。纯粹是要使VSCode智能感知与类型接口一起使用。这是一张图片,解释我想要什么(圆圈内的两行):
我认为可能存在概念上的误解,这是您在此处遇到的问题的基础。听起来您希望这些接口在运行时可用。Typescript接口纯粹是一个编译时概念。他们不编译任何东西。它们在运行时不存在。
我将这部分代码放入了一个名为的文件中interf.d.ts:
export namespace Interfaces {
export interface Interface {
property: string;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了文件test.ts:
import { Interfaces } from "./interf";
const x: Interfaces.Interface = {
property: "abc",
};
console.log(x);
Run Code Online (Sandbox Code Playgroud)
我没有编译错误,并且执行得很好。如预期的那样,接口已导出。在const你以后出口不需要导出接口(反正它并不能导出接口,它导出一个const其声明符合的接口,但是const是不是接口)。
但是,如果您试图在已编译的JavaScript中找到与您的接口相对应的内容,则由于我上面给出的原因,您将找不到它:它是一个编译时构造。
所以我能够使用JSDoc解决问题
测试文件
export namespace test {
export interface ITest {
foo: string;
bar: number;
}
}
Run Code Online (Sandbox Code Playgroud)
test.js
/**
* @type {import("./test").test.ITest}
*/
let x;
x.
Run Code Online (Sandbox Code Playgroud)
而智能感知现在
另外一两件事,我发现的是,如果添加jsconfig.json与
jsconfig.json
{
"compilerOptions": {
"checkJs": true
}
}
Run Code Online (Sandbox Code Playgroud)
您的智商进一步提高
更新1
正如@nickzoum所指出的,如果您定义test.d.ts以下内容
/**
* @type {import("./test").test.ITest}
*/
let x;
x.
Run Code Online (Sandbox Code Playgroud)
然后您也可以在JS中使用以下形式进行智能感知
/** @typedef {import("./test").ITest} ITest */
/** @type {ITest} */
var x = {};
x.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
420 次 |
| 最近记录: |