vue3.0 + ts 引入详细步骤及语法校验报错解决办法

这篇具有很好参考价值的文章主要介绍了vue3.0 + ts 引入详细步骤及语法校验报错解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

前段时间学习了ts,于是用脚手架搭了个vue3.0+ts的项目,引入详细步骤及语法校验报错解决办法,整理下遇到的问题以及解决办法,分享给大家。

二、使用

1. 引入ts

Q:
在vue项目中编写tsx函数式组件提示报错。在没有引入ts的项目中,写tsx语法提示报错。无法使用 JSX,除非提供了 “–jsx” 标志。ts(17004)
ts校验 vue3,vue,vue.js,javascript,前端
A:

  1. 先检查是否安装ts,cmd输入 tsc -v, 显示了版本号即安装了ts;未安装则执行 npm install -g typescript,全局安装ts;
  2. 下载依赖包 yarn add typescript @vue/cli-plugin-typescript;
  3. 添加tsconfig.json配置文件 。在项目目录下控制台输入tsc --init,该目录下生成tsconfig.json文件,内容替换成以下:
{
 "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "src/main.js"],
 "exclude": ["node_modules"],
 "compilerOptions": {
   "jsx": "preserve",
   "noImplicitAny": false,
   "allowJs": true,
   "target": "es2016",
   "module": "commonjs",
   "baseUrl": "./",
   "paths": {
     "@/*": ["./src/*"]
   },
   "types": ["webpack-env"],
   "esModuleInterop": true,
   "forceConsistentCasingInFileNames": true,
   "strict": true,
   "skipLibCheck": true 
 },
}
  1. jsconfig.json 文件添加 “jsx”: “preserve” 配置项。

R: 问题解决视图
ts校验 vue3,vue,vue.js,javascript,前端

2 main.js 修改成 main.ts

Q: 控制台报错 Can’t resolve ‘./src/main.js’ in ‘F:\code\st\Vue\v3_ts’
ts校验 vue3,vue,vue.js,javascript,前端
A: 停止运行后重新运行npm run serve 即可
R: 运行成功
ts校验 vue3,vue,vue.js,javascript,前端

3. 修改app.vue 后缀为 .tsx, 修改文件内容

import { defineComponent } from 'vue'
export default defineComponent({
  setup() {
    return () => (
      <router-view />
    )
  }
})

4. 组件引入less

使用import导入的方式引入,代码如下:
import "./index.less"
export default (props, ctx) => {
  return () => (
    <span>123</span>
  )
}

5. 组件引入图片

使用import导入的方式引入,代码如下:
ts校验 vue3,vue,vue.js,javascript,前端
Q:报错找不到模块“./img/right.png”或其相应的类型声明。
A:在src目录下新增文件 shims.d.ts 文件,内容如下:

declare module '*.vue' {
  import { ComponentOptions } from 'vue'
  const componentOptions: ComponentOptions
  export default componentOptions
}

declare module '*.less';
declare module '*.png';
declare module '*.json';

三、报错类型及解决办法

  1. Q:eslint 校验报错。
    A: vue.config.js 中添加 lintOnSave:false 配置项,重新运行即可。
    ts校验 vue3,vue,vue.js,javascript,前端

  2. Q: 引入 less 报错。
    ts校验 vue3,vue,vue.js,javascript,前端
    A:未下载less依赖包,yarn add less less-loader即可。

  3. Q:使用navigator.getUserMedia 提示报错 类型“Navigator”上不存在属性“getUserMedia”
    ts校验 vue3,vue,vue.js,javascript,前端
    A:在src目录下 shims.d.ts 文件中添加如下内容即可。

interface Navigator {
  getUserMedia(
    constraints: MediaStreamConstraints, 
    successCallback: NavigatorUserMediaSuccessCallback, 
    errorCallback: NavigatorUserMediaErrorCallback
  ): Promise<MediaStream>;
}
declare const navigator: Navigator;
  1. Q:使用dom获取页面元素,修改属性值时报错。不能将类型“HTMLElement | null”分配给类型“HTMLVideoElement”。不能将类型“null”分配给类型“HTMLVideoElement”。
    ts校验 vue3,vue,vue.js,javascript,前端
    A:使用断言,把获取到的dom元素设置成 HTMLVideoElement 类型,代码如下:
videoEle = document.getElementById("video") as HTMLVideoElement;
videoEle.srcObject = stream;
videoEle.onloadedmetadata = function (e) {
  videoEle.play();
};

暂时遇到了这些,后续遇到其他语法报错的问题再更新。文章来源地址https://www.toymoban.com/news/detail-677506.html

  1. Q: 父组件传子组件非必传参数,在子组件中使用报错。类型“string | undefined”的参数不能赋给类型“string”的参数。
    不能将类型“undefined”分配给类型“string”。

    ts校验 vue3,vue,vue.js,javascript,前端
    A: 使用断言,设置成对应类型,如
let placeholder = ref<string>(props?.placeholder as string)
  1. Q: 引入第三方js,报错 找不到名称“XLSX”。
    ts校验 vue3,vue,vue.js,javascript,前端
    A:在src目录下 shims.d.ts 文件中添加如下内容即可。
declare const XLSX: any;
  1. Q 使用父组件传入的属性报错,property) s: string | undefined,对象可能为“未定义”。ts(2532)
    ts校验 vue3,vue,vue.js,javascript,前端
    A: 使用 let str = props.s as string; 变量接收属性值后断言成对应类型的数据类型
import { defineComponent } from "vue";
import VP from "./components/poker"
interface Props {
  s?: string
}
export default defineComponent({
  props: {
    s: {
      type: String
    }
  },
  setup(props: Props, ctx) {
    let str = props.s as string;
    return () => (
      <>
        {
          str.split("").map(v => {
            return (<VP></VP>)
          })
        }
      </>
    )
  }
})

到了这里,关于vue3.0 + ts 引入详细步骤及语法校验报错解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3+ ts ts语法在script写不知道为啥一直报错

    在vue3页面中写ts语法 发现识别不了 一直报错 1.出现这种问题的话,首先查看自己写的有没有问题,没有问题的话 2.再查看 script里边有没有写 lang=\\\"ts\\\" 解析 setup: 是vue3在单文件组件 (SFC) 中使用 composition api 的编译时语法糖。 lang=\\\"ts\\\" :表示你的代码将是 TypeScript 语法

    2024年02月11日
    浏览(26)
  • vite+vue3+ts项目构建详细步骤(配置多语言版本)

    时过境迁,我们见证了诸如 webpack、Rollup 和 Parcel 等工具的变迁,它们极大地改善了前端开发者的开发体验。 然而,当我们开始构建越来越大型的应用时,需要处理的 JavaScript 代码量也呈指数级增长。包含数千个模块的大型项目相当普遍。基于 JavaScript 开发的工具就会开始遇

    2024年02月05日
    浏览(35)
  • vue3+vite在main.ts或者main.js文件中引入/App.vue报错(/App.vue不是模块)

    vue3报错提示 找不到模块“/App.vue”或其相应的类型声明 在使用 vue3➕vite➕ts 或者 js 搭建前端框架时,在 main.ts 或者 main.js 中引入 /App.vue 报错。报错内容为 /App.vue不是模块 。下面我们分 vue3+js 和 vue3+ts 两种情况讨论,给出相应的解决方案。 报错显示 : 报错原因 :javascrip

    2024年01月25日
    浏览(38)
  • vue3 ts element plus form表单二次封装详细步骤 (附参数、类型详细介绍及简单使用示例)

    上篇table 表格封装 讲到项目中经常会用到 table 表格,所以做了封装。当然,form 表单使用的频率依然很高,所以和封装 table 表格的思路相似,对 form 表单也做了一个二次封装的组件。 查看国内预览站 查看国外预览站 1. EasyForm 表单组件封装 src/components/EasyForm/index.vue Form 表单

    2024年02月07日
    浏览(53)
  • vue3+ts未使用变量报错的解决

    tsconfig.json文件中开启了ts语法检查 根据需求将对应的语法检查设置为false即可,但是语法检查是为了保障我们的代码合法性避免之后不可预见的错误最好开启语法检查如果有特定的需要可以使用//@ts-ignore来关闭语法检查

    2024年02月14日
    浏览(29)
  • vue3项目中引入ts

    提示:文章是基于vue3的项目基础上引入ts vue create vue3-ts 选择自定义预设,ts设置未选中状态 选择yarn与npm启动项目(根据个人,在这里我选择yarn) 问题一: 问题二: 问题一 在script 标签中引入ts后,会产生JSX语法错误,这时我们需要引入ts(全局引用与局部引用) 第一步:

    2023年04月10日
    浏览(29)
  • vue3+ts项目中eslint校验配置

    eslint中文官网:ESLint - Pluggable JavaScript linter - ESLint中文 ESLint 是一个根据方案识别并报告 ECMAScript/JavaScript 代码问题的工具,其目的是使代码风格更加一致并避免错误,合理利用可以提高代码质量。 1.安装eslint pnpm i eslint -D 2.生成eslint配置文件 npx eslint --init 3.安装vue3代码环境校

    2024年02月04日
    浏览(46)
  • uniapp+vue3+ts+vite+echarts开发图表类小程序,将echarts导入项目使用的详细步骤,耗时一天终于弄好了

    想在uniapp和vue3环境中使用echarts是一件相当前卫的事情,官方适配的还不是很好,echarts的使用插件写的是有些不太清晰的,这里我花费了一天的时间,终于将这个使用步骤搞清楚了,并且建了一个仓库,大家可以直接clone下来使用。先看一下pc端和小程序端的效果: 微信小程

    2024年02月05日
    浏览(56)
  • Vue3:组合式函数(引入外部ts文件,修改外部ts参数)

            在 Vue 应用的概念中,“组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用 有状态逻辑 的函数。更为复杂的业务逻辑可以使用store来处理         vue3中不在推荐使用mixins,在 Vue 2 中,mixins 是创建可重用组件逻辑的主要方式。尽管在 Vue 3 中保留

    2024年02月15日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包