如何让 typescript 支持 require 类型检查

2022-07-11 16:30:55 +08:00
 xushengfeng

我使用 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

1904 次点击
所在节点    TypeScript
9 条回复
br_wang
2022-07-11 17:04:47 +08:00
有装 @types/node 的依赖?
rbe
2022-07-11 17:05:29 +08:00
wunonglin
2022-07-11 17:06:49 +08:00
1 、装 @types/node
2 、import {path} from 'path' 的写法
xushengfeng
2022-07-11 17:27:27 +08:00
@br_wang
xushengfeng
2022-07-11 17:28:11 +08:00
@rbe import 在 nodejs 上报错
br_wang
2022-07-11 18:15:11 +08:00
@xushengfeng node 版本在 v13 以上可以在 package.json 里声明 {"type": "module"} 来支持 import 语法。
rbe
2022-07-11 18:15:29 +08:00
@xushengfeng #5 你不是说你在用 ts 吗,设置 tsconfig.json 的 compilerOptions.module 为 commonjs ,编译完 import 就是 require 了
br_wang
2022-07-11 18:26:16 +08:00
xushengfeng
2022-07-11 19:18:02 +08:00
@rbe 确实编译成 require 了但是多了
Object.defineProperty(exports, "__esModule", { value: true });
exports 会让其报错,去掉后一切正常,怎样配置才能让他不输出这行呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865463

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX