为什么我的TS代码中出现TS80005错误?

问题描述 投票:0回答:2

索引.ts

const utils = require("./utils.ts");

console.log(utils.sqrtRoot("asd"));

utils.ts

function sqrtRoot(x: number): number {
  return Math.sqrt(x);
}

module.exports = {
  sqrtRoot,
};

tsconfig.json

{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "strict": true,
  }
}

package.json

{
  "name": "untitled",
  "version": "1.0.0",
  "description": "",
  "main": "index.ts",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "prettier": "^2.2.1"
  },
  "private": true,
  "devDependencies": {
    "@types/node": "^22.5.5",
    "typescript": "^5.6.2"
  }
}

这是我的发现:

  1. 在index.ts上,根据要求,我得到了TS80005。为什么?我已经明确指定这是一个 CommonJS 项目。
  2. TS 正在满足要求。 utils 没有类型数据,我可以将任何数据类型传递到
    utils.sqrtRoot
    中。我的 IDE IntelliSense 或编译器没有错误。编译没有错误。

我做错了什么?

我希望 TS80005 不存在,并且我的 IDE Intellisense 或 TSC 会在尝试将字符串传递到

utils.sqrtRoot()
时向我显示错误。

typescript commonjs
2个回答
0
投票

TS 不允许对 TS 模块进行 require,除非它们首先被转译为 JS,你仍然可以使用

require
,但你必须将每个导入/导出文件扩展名从
.ts
更改为
.js

顺便问一下,目的是什么?


0
投票

当将

require()
.ts
文件一起使用时,必须像这样显式声明默认值:

const { default: utils } = require('./utils.ts');
© www.soinside.com 2019 - 2024. All rights reserved.