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

导入任何依赖项时,无法使用其他文件中的接口

终弘厚
2023-03-14

我在导入接口时遇到问题。当我在单独的文件中具有非导入依赖项的接口时,例如:

/src/app/某物/something.interface.ts

interface ISomething {
    a: String[];
}

我可以在同一目录中的另一个文件中使用它而无需导入它,例如:

< code >/src/app/someting/something . tsx

class Something extends React.Component<ISomething, any> {

}

但是当我有这样的界面时:

import Page from '../components/page';

interface ISomething {
    a: String[];
    b: Page;
}

我从编译过程中得到一个错误:< code >[2]src/app/something/something . tsx(9,40)中的错误:错误TS2304:找不到名称“ISomething”。

我尝试使用< code >导出接口...并将它们导入到< code>something.tsx中,但这将得到一个错误

[2] ERROR in src/app/application/education/react/renderer/renderer.tsx(8,9): error TS2305: Module '"/Users/xxx/Projects/react/src/app/something/something.interface"' has no exported member 'ISomething'.

当我把我的ISomekin接口放在something.tsx文件中时,它可以工作,但我想在单独的文件中保持干净。

你知道为什么吗?

编辑: tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

tsconfig.app.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../dist/out-tsc/app",
    "module": "es2015",
    "types": [
      "node"
    ]
  },
  "exclude": [
    "src/test.ts",
    "**/*.spec.ts"
  ],
    "angularCompilerOptions": {
        "preserveWhitespaces": true
    }
}

共有1个答案

公冶嘉茂
2023-03-14

这是由于Typescript中的一些奇怪的默认行为(主要是出于遗留目的)。默认情况下,如果您的文件中没有导入/导出语句,并且包含在您的tsconfig.json中(默认情况下,直接包含tsconfig中的所有内容),Typescript会将其视为脚本,而不是模块,并使其标识符在全局范围内可用。

您可以通过更改CompilerOptions中的模块的值来禁用此行为tsconfig.json.您想要哪个值取决于此代码的去向,但例如,使用es6应该会为您提供所需的行为。

 类似资料:
  • 问题内容: 实际上,我的项目有单元测试。所有这些都在最近配置中。我需要在中添加检测测试。为此,我在中添加了espresso依赖项。 之后,我选择了Build Variants-> Test Artifact-> Android Instrumentation Tests。 但是,当我开始编码时,没有一个依赖项被识别: “无法解析符号onView”,“无法解析符号ViewInteraction”等…

  • 这个问题一直让我发疯。我正在尝试从同一目录中的文件导入一个类。PyCharm给了我“未解析引用”错误在中定义。 我发现了这些问题: PyCharm中未解决的引用问题 Py PyCharm显示有效代码的未解析引用错误 使用从兄弟子包导入时未解析的引用 我有以下项目结构: 我已将 src 标记为源根... 我已经设置了“将源根添加到PYTHONPATH”: 我试过文件- 如果我尝试运行它,我在控制台中

  • 问题内容: 首先,我要说我是Ant的新手。就像之前一样,我只是在两天前才开始学习它以完成此任务。 我想要做的是创建一个“ master”蚂蚁脚本,该脚本调用其他几个蚂蚁脚本。例如: 现在,我拥有用于​​A,B和C的所有单独版本。通过这个,我的意思是我可以从这些文件夹中的任何一个运行“ ant”,它将构建项目并生成一个jar文件。如果以这种方式构建A,B和C,则我有3个jar文件。然后,我可以将它们

  • 问题内容: 我似乎无法让Python在子文件夹中导入模块。当我尝试从导入的模块创建类的实例时出现错误,但是导入本身成功。这是我的目录结构: 这是server.py的内容: 和user.py: 错误是:AttributeError:’模块’对象没有属性’用户’ 问题答案: 我相信您需要在Models目录中创建一个名为的文件,以便python将其视为模块。 然后,您可以执行以下操作: 您可以在其中添加

  • 实际上,我的项目有单元测试。它们都是在< code>/src/test/java/中配置的。最近我需要在< code >/src/androidTest/Java 中添加插装测试。为此,我在< code>build.gradle中添加了espresso依赖项。 之后,我选择了构建变体- 但是当我开始编码时,没有一个依赖项被识别出来: “无法解析符号 onView”、“无法解析符号视图交互”等...

  • 问题内容: 我有以下目录结构: 我想为some_project安装依赖项。我知道我可以CD进入some_project然后运行npm install 但是我想知道是否可以不更改目录?就像是 问题答案: 您可以将变体与选项一起使用。在您的方案中,文件夹和前缀将相同: