TS80005,为什么会出现在这里?

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

索引.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
1个回答
0
投票
TS 不允许对 TS 模块进行 require,除非它们首先被转译为 JS,您仍然可以使用

require

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

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

© www.soinside.com 2019 - 2024. All rights reserved.