停止 typescript-eslint/explicit-module-boundary-types 应用于不使用 Typescript 的 vue 组件
Posted
技术标签:
【中文标题】停止 typescript-eslint/explicit-module-boundary-types 应用于不使用 Typescript 的 vue 组件【英文标题】:Stop typescript-eslint/explicit-module-boundary-types to be applied on vue component not using Typescript 【发布时间】:2020-12-15 23:12:04 【问题描述】:我正在使用vue
,我刚刚更新了@typescript-eslint/eslint-plugin": "^3.10.1"
。我的项目包含几个组件。他们中的一些人使用javascript
和其他人typescript
。
警告
我对 non typescript
组件中的方法有此警告
警告:函数缺少返回类型 (@typescript-eslint/explicit-module-boundary-types)
问题
我怎么能不将此规则应用于未使用 <script lang="ts">
的 .vue
文件?
【问题讨论】:
我也面临同样的问题。这似乎是eslint-plugin-vue
插件的限制——它将 Typescript 规则应用于 Vue javascript <script>
vs. Typescript <script lang="ts"
单文件组件。很遗憾,在重用来自其他地方的这种混合组件时,我们无法获得干净的 eslint 输出。你找到解决办法了吗?
【参考方案1】:
因此,此规则的目的是确保导出的模块对外部使用它的人有一个清晰的界面。从rule page来看,使用.ts
文件而不是.vue
文件似乎是有意义的,但你可以根据你的项目需求来判断。
对于我的项目,我使用了suggested overrides
configuration:
"rules":
// disable the rule for all files
"@typescript-eslint/explicit-module-boundary-types": "off"
,
"overrides": [
// enable the rule specifically for TypeScript files
"files": ["*.ts", "*.tsx"],
"rules":
"@typescript-eslint/explicit-module-boundary-types": ["error"]
]
除此之外,我认为你不能用 filters
说 on the caught .vue files by eslint, only apply the rule on the ones matched by: 'having <script lang="ts">'
。
对于这些具体错误,您最好使用inline comments。
编辑
我看到的另一种解决方案可能是手动在 .eslint.config
文件中列出您的文件。
另见
Extending your TypeScript linting with Type-Aware Rules I get errors telling me "The file must be included in at least one of the projects provided"如果您确实想使用类型感知 linting 对文件进行 lint: 检查您提供给 parserOptions.project 的每个 tsconfig 的包含选项 - 您必须确保所有文件都与包含 glob 匹配,否则我们的工具将无法找到它。 如果您的文件不应该是现有 tsconfig 的一部分(例如,它是存储库本地的脚本/工具),那么请考虑在您的项目根目录在其包含中列出了此文件。例如,您可以查看我们在此 repo 中使用的配置: tsconfig.eslint.json .eslintrc.js
【讨论】:
以上是关于停止 typescript-eslint/explicit-module-boundary-types 应用于不使用 Typescript 的 vue 组件的主要内容,如果未能解决你的问题,请参考以下文章