Typescript ESLint 声明文件

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

我用谷歌搜索了一下,但找不到任何与此相关的内容,可能是因为我不太确定导致问题的原因。

我想在 node.js 全局对象上设置一个全局值。只是一个简单的字符串

global.appRoot = path.resolve(__dirname)

由于我使用的是 Typescript,我的编辑器(Visual Studio Code)警告我该属性在 Global 类型上不存在,这是有道理的。

我继续在我的根文件夹中创建了一个

global.d.ts

declare namespace NodeJS {
  export interface Global {
        appRoot: string;
  }
}

这工作得很好,编辑器告诉我这很好,但仍然会破坏其他随机属性,所以一切仍然有效。

然而,这就是问题所在。当我运行以下命令来检查并修复我的代码时,它似乎无法识别我的声明文件

global.d.ts
,并且崩溃并显示 VS Code 之前给我的相同错误消息。
src/app.ts:15:8 - error TS2339: Property 'appRoot' does not exist on type 'Global & typeof globalThis'.

eslint -c ./.eslintrc.js --ext .ts,.js --fix ./src/**/*.{js,ts}`

这些是我的配置文件

.eslintrc.js

module.exports = {
    root: true,
    parser: '@typescript-eslint/parser',
    env: {
        node: true,
    },
    plugins: [
        '@typescript-eslint',
    ],
    extends: [
        'eslint:recommended',
        'plugin:@typescript-eslint/recommended',
    ],
    rules: {
        ...
    },
};

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true,
    "moduleResolution": "node",
    "baseUrl": "./src",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "node_modues"
  ]
}
node.js typescript express eslint
1个回答
0
投票

这个问题似乎混淆了两个单独的工具:

  • TypeScript 是您正在编写的编程语言。它的工具包括一个类型检查器,可以在命令行 (
    tsc
    ) 上运行并集成到 VS Code 等编辑器中。
    • TypeScript 使用
      tsconfig.json
      文件进行配置。
  • ESLint 是一个实用程序,用于根据可配置的规则列表扫描(“lint”)代码中的缺陷。
    • ESLint 配置了一个名称类似于
      .eslintrc.js
      eslint.config.js
      的文件。

这个问题使用了单词 “lint” 但 ESLint 在这里不相关。有问题的错误是 TypeScript 类型检查投诉。

这里的问题可能是

tsconfig.json
指定了
include: ["src/**/*.ts"]
global.d.ts
文件位于该目录之外。尝试将其移动为
src/global.d.ts
。如果失败,请在 TSConfig 的
include
中显式包含全局类型的路径。

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