人
我试图在d.ts文件中声明自定义类型,并在javascript文件中的jsdoc注释中使用它,以便在VS Code中使用智能感知。
示例如下:
文件types.d.ts
import { Request } from "express";
declare interface IRouter {
request: Request,
someProp: string
....
}
当我试图在@type中使用它时,intellisense不起作用。
如, someFile.js
/// <reference path="types.d.ts"/>
/**
* @type {IRouter}
*/
let customRouter;
因此,当我使用变量&#34; customRouter&#34;时,VSCode不会提供有关可能属性的智能感知。但是,如果我将从d.ts文件中删除导入 - 那么一切正常。
在这种情况下会出现什么问题?
提前谢谢。
答案 0 :(得分:0)
添加import
会使您的d.ts
文件进入模块,您将无法再获取IRounter
等环境类型。
要解决此问题,请:
在js文件中添加导入:
import { IRouter } from "./types";
/**
* @type {IRouter}
*/
let customRouter;
或者在d.ts
中使用声明全局:
import { Request } from "express";
declare global {
export interface IRouter {
request: Request,
someProp: string;
}
}
答案 1 :(得分:0)
首先,我想说的就是TypeScript的工作原理,只是为了清除它。
如果没有安装.js
dist文件或@types/<library-name>
软件包旁边的定义文件,TypeScript就是不知道如何做。
也就是说,我使用的是IntelliJ Ultimate,而打字可以直接使用。 我想他们要做一些额外的工作。
您会看到VSCode甚至都不希望自动完成文件名。
解决此问题的技巧是将TypeScript与triple-slash directive /// <reference
/// <reference path="node_modules/bpmn-js/lib/Modeler.js"/>
import Modeler from 'bpmn-js/lib/Modeler';
new Modeler()
现在,这更多是向VSCode团队建议的功能,而不是真正的限制。