为什么 WebStorm 将 TypeScript 中的导出显示为未使用?

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

当我开发 NPM 库(作为 ESM 模块)时,WebStorm 显示我的导出未使用。怎么解决?

我的

tsconfig.json

{
  "compilerOptions": {
    "declaration": true,
    "declarationDir": "./dist",
    "lib": [],
    "module": "CommonJS",
    "target": "es5",
    "sourceMap": true,
    "strict": true,
    "noImplicitAny": true
  },
  "include": [
    "src"
  ]
}

我的

package.json

{
  "name": "",
  "version": "0.0.1",
  "main": "dist/index.js",
  "scripts": {
    "build": "gulp clear"
  },
  "exports": {
    ".": "./dist/index.js"
  },
  "devDependencies": {
    "@types/node": "^20.4.2",
    "fs-extra": "^11.1.1",
    "gulp": "^4.0.2",
    "gulp-sourcemaps": "^3.0.0",
    "gulp-terser": "^2.1.0",
    "gulp-typescript": "^6.0.0-alpha.1",
    "merge-stream": "^2.0.0",
    "typescript": "^5.1.6",
    "vinyl-buffer": "^1.0.1"
  }
}

gulpfile.js

const gulp = require("gulp");
const ts = require("gulp-typescript");
const terser = require("gulp-terser");
const merge = require('merge-stream');
const tsProject = ts.createProject("tsconfig.json");

gulp.task("default", function () {
    const tsResult = tsProject
        .src()
        .pipe(tsProject());
    return merge(tsResult.dts, tsResult.js.pipe(terser()))
        .pipe(gulp.dest("dist"));
});

WebStorm 的行为:

为什么会发生这种情况以及如何解决? Snap 上的 WebStorm 2023.1.3

javascript typescript gulp webstorm jetbrains-ide
1个回答
1
投票

在我看来,WebStorm 无法知道该类是在您的工作空间之外使用的。它可以应用这样的逻辑:如果从 index.js 或您在

package.json
中公开的任何模块导出符号,则它意味着公共 API,并且不会报告为未使用,但 WebStorm 中似乎没有这样的逻辑。
您可以做的是,正如 WebStorm 本身所建议的那样,通过添加来让它忽略未使用的符号

// noinspection JSUnusedGlobalSymbols

在其声明之前的行中。检查动作 (
Alt-Return

) 甚至会为您做到这一点:

您也可以通过将注释放在第一行,后跟一个空行来忽略整个源文件中的所有此类警告,但我不建议这样做,因为存在您可能会错过一些实际未使用的符号的危险。

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