typescript tslint react setup中的“'public'只能在.ts文件中使用”?

Posted

技术标签:

【中文标题】typescript tslint react setup中的“\'public\'只能在.ts文件中使用”?【英文标题】:"'public' can only be used in a .ts file" in typescript tslint react setup?typescript tslint react setup中的“'public'只能在.ts文件中使用”? 【发布时间】:2019-07-07 20:26:54 【问题描述】:

我无法弄清楚为什么在 VSCode 中使用 react typescript 项目,使用 tslint 设置,我收到错误:

'public' 只能在 .ts 文件中使用。

[实际上也是为什么我没有得到通常的变量 a 也从未读取/使用过警告/错误]

tsconfig.json


  "compilerOptions": 
    "plugins": [
      
        "name": "typescript-tslint-plugin"
      
    ]
  ,

tslint.json


    "defaultSeverity": "error",
    "extends": ["tslint:recommended", "tslint-react"],
    "jsRules": ,
    "rules": 
        "semicolon": [true, "never"]
    ,
    "rulesDirectory": []

package.json


  "name": "test-amplify-1",
  "version": "0.1.0",
  "private": true,
  "dependencies": 
    "@types/jest": "24.0.1",
    "@types/node": "11.9.0",
    "@types/react": "16.8.2",
    "@types/react-dom": "16.8.0",
    "react": "^16.8.1",
    "react-dom": "^16.8.1",
    "react-scripts": "2.1.5"
  ,
  "scripts": 
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  ,
  "eslintConfig": 
    "extends": "react-app"
  ,
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ],
  "devDependencies": 
    "tslint": "^5.12.1",
    "tslint-react": "^3.6.0",
    "typescript": "^3.3.3",
    "typescript-tslint-plugin": "^0.3.1"
  

vscode 扩展

内置的(即没有触及)

已使用本地软件包(typescript/tslint)进行设置,但供全球参考:

【问题讨论】:

【参考方案1】:

我认为默认不启用tsx,您是否尝试将jsx添加到您的tsconfig文件中?


  "compilerOptions": 
    "outDir": "./dist/",
    "sourceMap": true,
    "noImplicitAny": true,
    "module": "commonjs",
    // "target": "es5",
    "removeComments": true,
    "jsx": "react",
    "allowJs": false,
    "baseUrl": "src",
    "experimentalDecorators": true,
    "alwaysStrict": true,
    "lib": [
      "es2015"
    ],
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "skipLibCheck": true,
    "allowSyntheticDefaultImports": true
  ,
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules"
  ],
  "awesomeTypescriptLoaderOptions": 
    "useCache": true,
    "useTranspileModule": true,
    "transpileOnly": true
  

【讨论】:

试过,但这没有用 - 将我的 tsconfig 更新为:" "compilerOptions": "jsx": "react", "plugins": [ "name": "typescript- tslint-plugin" ] , " 我添加了我用于大多数项目的完整 ts 配置文件,试一试,看看有什么帮助你 刚刚尝试过但没有帮助...您使用本地还是全局 typescript / tslint? 我都使用本地安装 有趣的是,我刚刚删除了 typescript/tslint 的本地安装以及何时在我创建的另一个测试 react-typescript 项目上进行全局安装,它似乎没有问题【参考方案2】:

您的问题可能已经在此得到解答。以下是我认为的更多细节。 js 'types' can only be used in a .ts file - Visual Studio Code using @ts-check 最后我可以看到我正在运行 tslint 1.0.0 版本。此外,您的打字稿版本可能有问题。如果您使用的是 typescript 2.3 或更早版本,则启用潮汐时 html 文件将被视为 typescript 文件。将打字稿更新到 2.4.1。还要更新打字稿/语言服务。将以下内容添加到 tsconfig.json。这可能是因为您的角度版本。 您关于为什么a 变量抱怨为unused 的问题,答案是您已经声明了一个变量但尚未在代码中的任何地方使用它,您可以忽略此类警告。只要您在代码中的某处使用该变量,该警告就会消失。所以,改变角度版本,看看是否会发出警告。通常tslint 应该检测.ts 文件并工作。

【讨论】:

我在这里运行 tslint。另外我没有使用 Angular。关于“a”变量,我想知道为什么当前没有显示警告 我的评论对此有帮助吗? a 变量会一直抱怨,直到您不在某处使用该变量,声明一个变量并使其未使用是 linting 不喜欢的。它也会发生在导入上,无论语言如何,您在任何代码的类文件中使用和不使用的许多导入都会在编译期间被编译器抱怨。而且,如果您将a 更改为let a = 1,它会再次抱怨,要求您将其更改为const,因为值不会改变。这都是关于 linting,语法上两者都是正确的。 我的问题(也许你确实理解了,我错过了你所得到的)是我期待 tslint 发出警告,但事实并非如此(即在你看到的图像中)不是警告)

以上是关于typescript tslint react setup中的“'public'只能在.ts文件中使用”?的主要内容,如果未能解决你的问题,请参考以下文章

包裹别名未向 tslint 注册

如何使用 TSLint 查看反应脚本 ESLint 错误

如何使用 typescript 同步 eslint 或设置类似的 tslint 和 prettier?

TSLint 在 VS 代码中不起作用

TSLINT 错误:“typeof React”类型上不存在属性“组件”

TypeScript TSLint(TypeScript代码检查工具)