首页 文章

从具有导入的类型定义中对VS Code中的javascript文件进行智能感知

提问于
浏览
1

家伙 .

我正在尝试在d.ts文件中声明自定义类型,并在javascript文件中的jsdoc注释中使用它以在VS Code中具有智能感知 .

示例如下:

文件类型.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;

因此,当我使用变量“customRouter”时,VSCode不提供有关可能属性的智能感知 . 但是,如果我将从d.ts文件中删除导入 - 那么一切正常 .

在这种情况下会出现什么问题?

先感谢您 .

1 回答

  • 0

    添加 import 使您的 d.ts 文件进入模块,您将无法再获取 IRounter 等环境类型 .

    为了解决这个问题,要么:

    • 在js文件中添加导入:
    import { IRouter } from "./types";
    
    /**
     * @type {IRouter}
     */
    let customRouter;
    
    • 或者在 d.ts 中使用declare global:
    import { Request } from "express";
    
    declare global {
        export interface IRouter {
            request: Request,
            someProp: string;
        }
    }
    

相关问题