vue+ts 错误随笔

笔记

  • 问题
    • [Parameter 'xxx' implicitly has an 'any' type的解决](#Parameter ‘xxx’ implicitly has an ‘any’ type的解决)
    • [ts ref定义数组,数组遍历报错=>类型"never"上不存在属性"xx"](#ts ref定义数组,数组遍历报错=>类型“never”上不存在属性“xx”)
    • ts项目computed定义数据
    • [Getting a value from the `props` in root scope of `<script setup>` will cause the value to lose reactivity.](#Getting a value from the props in root scope of <script setup> will cause the value to lose reactivity.)
    • 函数-可选参数
    • [一个函数没有返回值,此时在 TS 的类型中,应该使用 void 类型](#一个函数没有返回值,此时在 TS 的类型中,应该使用 void 类型)
    • vue3+ts+setup,一键返回顶部

问题

Parameter 'xxx' implicitly has an 'any' type的解决

这句话翻译过来就是参数暗指是any类型

解决:tsconfig.json添加"noImplicitAny": false,

或者 "strict": true,改为false

javascript 复制代码
{
  "compilerOptions": {
    "strict": false, //<---或者修改这个
    "noImplicitAny": false // <-----
  }
}

ts ref定义数组,数组遍历报错=>类型"never"上不存在属性"xx"

javascript 复制代码
const list= ref<transferListItem[]>([]);
//原先是ref([]);报错的,改成上面就行了

ts项目computed定义数据

javascript 复制代码
//重点WritableComputedRef
const data:WritableComputedRef<transferListItem[]>   = computed({
      get() {
        return leftData.value
      },
      set(newValue) {
        leftData.value=newValue
      }
  })
    import { computed, type WritableComputedRef } from 'vue'
  
  // 验证通过
 const textvalue: WritableComputedRef<string> = computed({
    get() {
      return store.textvalue
    },
    set(newValue: string) {
      return store.changeTextvalue(newValue)
    }
  })

Getting a value from the props in root scope of <script setup> will cause the value to lose reactivity.

报错内容翻译为 从' setup() '的根范围的' props '中获取一个值将导致该值失去反应性

这样翻译下来应该就能明白什么意思了,就是我们从props中获取父组件传递数据的时候,不管父组件传递的是不是响应式的数据,在接收的时候要把数据转换为响应式的

javascript 复制代码
//改为这种格式即可
 const {option } = {...props }
 //举个例子:
let {
  leftBtnText,
  rightBtnText,
  leftTitleText,
  rightTitleText,
  placeholderLeft,
  placeholderRight } = { ...props}

函数-可选参数

javascript 复制代码
 // 可选参数:在可选参数名的后面添加 ?(问号)
function mySlice(start: number, end?: number): void {
  console.log('起始索引:', start, '结束索引:', end)
}

一个函数没有返回值,此时在 TS 的类型中,应该使用 void 类型

  • 不写return
  • 写return ,但是后面不接内容
  • 写return undefined
javascript 复制代码
// 如果什么都不写,此时,add 函数的返回值类型为: void
const add = () => {}
 
// 这种写法是明确指定函数返回值类型为 void,与上面不指定返回值类型相同
const add = (): void => {}
​
// 如果指定 返回值类型为 undefined,此时,函数体中必须显示的 return undefined 才可以
const add = (): undefined => {
  // 此处返回的 undefined 是 JS 中的一个值
  return undefined
}

vue3+ts+setup,一键返回顶部

javascript 复制代码
 <div class="anchor-point wh" ref="wrapper" @scroll="onScroll">
 </div>
 //返回到顶部
  function backTo(){
    document.querySelector('.anchor-point').scrollTo({
        top:0,
        behavior:'smooth'
      })
  }
相关推荐
大橙子额2 小时前
【解决报错】Cannot assign to read only property ‘exports‘ of object ‘#<Object>‘
前端·javascript·vue.js
WooaiJava3 小时前
AI 智能助手项目面试技术要点总结(前端部分)
javascript·大模型·html5
LYFlied3 小时前
从 Vue 到 React,再到 React Native:资深前端开发者的平滑过渡指南
vue.js·react native·react.js
Never_Satisfied3 小时前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
董世昌413 小时前
深度解析ES6 Set与Map:相同点、核心差异及实战选型
前端·javascript·es6
B站_计算机毕业设计之家3 小时前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
WeiXiao_Hyy4 小时前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
xjt_09015 小时前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农5 小时前
Vue 2.3
前端·javascript·vue.js
辰风沐阳5 小时前
JavaScript 的宏任务和微任务
javascript