当前位置: 首页 > 知识库问答 >
问题:

为什么- isolatedModules错误会被任何导入修复?

穆鸿飞
2023-03-14

在一个create-react-app typescript项目中,我试图编写这个只是为了快速测试一些东西:

// experiment.test.ts
it('experiment', () => {
  console.log('test');
});

但它给了我以下错误,下面有一个红色的波浪线:

当提供'-隔离模块'标志时,所有文件都必须是模块。

但是,如果我将文件更改为以下内容,那么一切显然都很好(当然除了未使用的导入):

// experiment.test.ts
import { Component} from 'react'; // literally anything, don't even have to use it

it('test', () => {
  console.log('test');
});

为什么?这里发生了什么事?< code> - isolatedModules实际上是什么意思/做什么?

共有3个答案

仲孙兴平
2023-03-14

尽管您从“错误文件”导出了内容,但仍有错误?

  1. 检查您是否没有导出已在另一个文件中导出的相同名称(冲突)
  2. 修复后尝试停止并启动您的npm/的纱线转轮(我经历了它不能恢复自己,即使在硬重新加载的页面,特别是当你有另一个错误在其他地方)
归星驰
2023-03-14

正确的方法是告诉TypeScript你想要什么。如果您不想<code>isolatedModules</code>创建<code>tsconfig。json在test目录中,并添加

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "isolatedModules": false
  },
}

添加“隔离模块”:对配置为 true,然后通过添加空导出 {} 来欺骗 TypeScript 检查器,这对我来说闻到了糟糕的代码。

淳于星宇
2023-03-14

Typescript将没有导入/导出的文件视为旧脚本文件。因此,这些文件不是模块,它们的任何定义都会合并到全局命名空间中isolatedModules禁止此类文件。

将任何导入或导出添加到文件将使其成为模块,错误将消失。

此外,< code>export {}是一种不用导入任何东西就能使文件成为模块的简便方法。

 类似资料:
  • 问题内容: 遇到一个错误地使用 而不是 在其代码中的人,它没有显示为编译错误。 是因为 是相同的 ? 问题答案: 没有编译错误,因为它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同: Java语言规范中的相关部分是Unary Plus运算符+(第15.15.3节) 。它指定调用一元运算会导致操作数的一元数值提升(第5.6.1节)。这意味着: * 如果操作数是编译时类型的,,,或,

  • 问题内容: 作为开发人员,我与E_NOTICE一起工作。不过最近,有人问我为什么应该修复E_NOTICE错误。我能提出的唯一理由是纠正这些问题的最佳实践。 还有其他人有任何理由证明纠正这些问题所花费的额外时间/成本吗? 更具体地说,如果代码已经起作用,为什么经理应该花钱修复这些问题? 问题答案: 摘要 在PHP运行时配置文件给你一些想法,为什么: 在开发过程中启用E_NOTICE有一些好处。 出于

  • 错误:第 1 行的解析错误:函数搜索(sour ^ 期望“字符串”、“数字”、“空”、“真”、“假”、“{”、“[”,得到“未定义” 代码:

  • 根据SQL字符串组合文档,我想在postgresql数据库中执行DELETE语句: 这将导致以下错误: 另一方面,类似的execute工作正常: 我真的看不出有什么区别...

  • 我需要将12小时的时间转换为24小时的格式。 我现在已经把12小时的时间硬编码了,以使事情更简单。 我的逻辑:输入sting 07:05:45PM提取最后2个字符。如果AM check为前两个字符,则为12。。如果是,则将其设置为00,否则按原样输出,如果PM检查前两位数字是否为12。。如果是,请保持原样,如果不是,则在前2位加上12 总线错误:10是我运行代码得到的

  • 我实现了以下REST调用: 也是一个提供和使用application/x-protobuf的提供者类: 我的pom。xml看起来像: 我的小部件。原型: 选项java_package=“example”;选项java\u outer\u classname=“WidgetsProtoc”; 对于http://localhost:8080/RESTfulExample/widgets我得到以下错误消