首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在vue组件的<script lang="ts">代码中将查询选择器结果转换为lang=的编译错误

在vue组件的<script lang="ts">代码中将查询选择器结果转换为lang=的编译错误
EN

Stack Overflow用户
提问于 2021-01-22 00:12:15
回答 1查看 268关注 0票数 1

基于Vuejs的项目中的一个组件有以下挂载方法

代码语言:javascript
复制
mounted() {
  try {
    let x = 'abc';
    console.log(x);
    let body = <HTMLElement> document.querySelector("body");
  } catch (e) {
    console.log(e);
  }
}

编译( is vue-cli-service lint file_path)出错的地方。

解析错误:意外令牌,预期的"}“ console.log(e); ......................^

我的eslintrc.js看起来如下(使用babel-eslint作为解析器)

代码语言:javascript
复制
module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: [
    'plugin:vue/essential',
  ],
  rules: {
    quotes: ['error', 'single']
  },
  parserOptions: {
    parser: 'babel-eslint',
  }
};

package.json有以下依赖项

代码语言:javascript
复制
"dependencies": {
    "@amcharts/amcharts4": "^4.6.1",
    "@sentry/browser": "^5.17.0",
    "@sentry/integrations": "^5.17.0",
    "@types/node": "^10.12.9",
    "@vue/cli-plugin-eslint": "^3.0.0-rc.3",
    "@vue/cli-plugin-typescript": "^3.0.0-rc.3",
    "@vue/cli-plugin-unit-mocha": "^3.0.0-rc.3",
    "@vue/cli-service": "3.9.3",
    "axios": "^0.15.3",
    "element-ui": "^2.8.2",
    "har-validator": "^5.1.3",
    "less-loader": "^4.1.0",
    "lodash": "^4.17.2",
    "moment": "^2.20.1",
    "typescript": "^3.0.1",
    "vee-validate": "^2.1.0-beta.7",
    "vue": "^2.5.16",
    "vue-authenticate": "^1.4.1",
    "vue-class-component": "^6.0.0",
    "vue-debounce": "^2.0.0",
    "vue-froala-wysiwyg": "^2.9.1",
    "vue-property-decorator": "^6.0.0",
    "vue-router": "^3.0.1",
    "vue-typeahead": "^2.3.0",
    "vuedraggable": "^2.21.0",
    "vuescroll": "^4.16.1",
    "vuetify": "1.1.0",
    "vuex": "^3.0.1",
    "vuex-router-sync": "^3.0.0",
    "vuex-saga": "^0.1.3"
  },
  "devDependencies": {
    "@types/chai": "^4.1.0",
    "@types/jest": "^23.3.10",
    "@types/mocha": "^2.2.46",
    "@types/webpack-env": "^1.15.2",
    "@vue/eslint-config-typescript": "^3.0.0-rc.3",
    "@vue/test-utils": "^1.1.0",
    "babel-core": "^6.26.0",
    "babel-jest": "^22.1.0",
    "babel-loader": "^7.1.2",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-2": "^6.24.1",
    "babel-preset-stage-3": "^6.24.1",
    "chai": "^4.1.2",
    "dotenv": "^6.0.0",
    "faker": "^4.1.0",
    "file-system": "^2.2.2",
    "flush-promises": "^1.0.2",
    "jasmine-core": "^3.3.0",
    "jest": "^22.1.4",
    "jest-vue": "^0.8.2",
    "jquery": "^3.5.1",
    "less": "~3.9.0",
    "lint-staged": "^6.0.0",
    "regenerator-runtime": "^0.11.1",
    "ts-jest": "^23.0.1",
    "vue-jest": "^3.0.2",
    "vue-router": "^3.0.1",
    "vue-template-compiler": "^2.5.16"
  }

是什么导致了这个问题?顺便说一句,运行eslint file_path会产生同样的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 00:33:14

打字本文件称,

...when与JSX一起使用TypeScript,只允许作为样式断言.

(意思是不允许使用角括号式断言)。

尽管JSX在Vue中的使用很少,但Vue是JSX兼容。这意味着您必须将类型断言限制为样式。换句话说,替换

代码语言:javascript
复制
let body = <HTMLElement> document.querySelector("body");

任一种

代码语言:javascript
复制
const body = document.querySelector("body") as HTMLElement;

代码语言:javascript
复制
const body: HTMLElement = document.querySelector("body");

注意:用let替换const与提出的问题无关,但是如果您从未重新分配到body,则应该使用const

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65837599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档