V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xushengfeng
V2EX  ›  TypeScript

如何让 typescript 支持 require 类型检查

  •  
  •   xushengfeng · 2022-07-11 16:30:55 +08:00 · 1644 次点击
    这是一个创建于 626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我使用 vscode 编辑器

    在使用 js 时:

    const path = require("path");
    

    悬浮在 path 上,编辑器是能正常检测到 path 的类型:

    (alias) namespace path
    (alias) const path: PlatformPath
    import path
    

    但使用 ts 时,相同的代码,编辑器把 path 识别为 any

    我猜测是 ts 的问题,我的版本是 4.7.4

    如何让 ts 检查 require 的类型?

    ps:因为是 nodejs 环境,所以只使用 require 而不是 import

    9 条回复    2022-07-11 19:18:02 +08:00
    br_wang
        1
    br_wang  
       2022-07-11 17:04:47 +08:00
    有装 @types/node 的依赖?
    rbe
        2
    rbe  
       2022-07-11 17:05:29 +08:00
    wunonglin
        3
    wunonglin  
       2022-07-11 17:06:49 +08:00
    1 、装 @types/node
    2 、import {path} from 'path' 的写法
    xushengfeng
        4
    xushengfeng  
    OP
       2022-07-11 17:27:27 +08:00
    @br_wang
    xushengfeng
        5
    xushengfeng  
    OP
       2022-07-11 17:28:11 +08:00
    @rbe import 在 nodejs 上报错
    br_wang
        6
    br_wang  
       2022-07-11 18:15:11 +08:00
    @xushengfeng node 版本在 v13 以上可以在 package.json 里声明 {"type": "module"} 来支持 import 语法。
    rbe
        7
    rbe  
       2022-07-11 18:15:29 +08:00
    @xushengfeng #5 你不是说你在用 ts 吗,设置 tsconfig.json 的 compilerOptions.module 为 commonjs ,编译完 import 就是 require 了
    br_wang
        8
    br_wang  
       2022-07-11 18:26:16 +08:00
    xushengfeng
        9
    xushengfeng  
    OP
       2022-07-11 19:18:02 +08:00
    @rbe 确实编译成 require 了但是多了
    Object.defineProperty(exports, "__esModule", { value: true });
    exports 会让其报错,去掉后一切正常,怎样配置才能让他不输出这行呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1104 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:48 · PVG 06:48 · LAX 15:48 · JFK 18:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.