TypeScript类型检查错误 error TS2339

2024-08-29 18:44

本文主要是介绍TypeScript类型检查错误 error TS2339,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

错误产生

上一篇博客写了一个调用摄像头的 demo ,用了 vue3 + vite ,使用了 TypeScript ,代码大致如下:

<script setup lang="ts">
import { onMounted, ref } from 'vue';
import WelcomeItem from './WelcomeItem.vue'
import ToolingIcon from './icons/IconTooling.vue'
import axios from 'axios';
import { ACCESS_TOKEN } from '../config/constants';const devices = ref([]);const fetchDevices = async () => {try {const response = await axios.post(`https://open.ys7.com/api/lapp/device/list?accessToken=${ACCESS_TOKEN}&pageStart=0&pageSize=40`);if (response.status === 200) {devices.value = response.data.data;console.log(response.data)} else {console.error('Failed to fetch devices:', response.statusText);}} catch (error) {console.error('Error fetching devices:', error);}
};onMounted(() => {fetchDevices();
});</script>
<template><WelcomeItem v-for="(device) in devices" :key="device.id"><template #icon><ToolingIcon /></template><template #heading>{{ device.deviceName }}</template>  <a :href="'/player/?id=' + device.deviceSerial + '&template=pcRec'" target="_blank">回放</a><a :href="'/player/?id=' + device.deviceSerial + '&template=pcLive'" target="_blank">直播</a></WelcomeItem>
</template>

在开发环境运行是没有问题的,但如果使用,npm run build (配置为类型检查,即 run-p type-check \"build-only {@})时,出现如下错误:

transforming (397) node_modules\axios\lib\platform\browser\classes\URLSearchParams.jssrc/components/ThePlayList.vue:31:59 - error TS2339: Property 'id' does not exist on type 'never'.31     <WelcomeItem v-for="(device) in devices" :key="device.id">~~src/components/ThePlayList.vue:35:34 - error TS2339: Property 'deviceName' does not exist on type 'never'.35     <template #heading>{{ device.deviceName }}</template>~~~~~~~~~~src/components/ThePlayList.vue:36:39 - error TS2339: Property 'deviceSerial' does not exist on type 'never'.36     <a :href="'/player/?id=' + device.deviceSerial + '&template=pcRec'" target="_blank">回放</a>~~~~~~~~~~~~src/components/ThePlayList.vue:37:39 - error TS2339: Property 'deviceSerial' does not exist on type 'never'.37     <a :href="'/player/?id=' + device.deviceSerial + '&template=pcLive'" target="_blank">直播</a>~~~~~~~~~~~~Found 4 errors.ERROR: "type-check" exited with 2.

解决办法

1. 不做类型检查

这是简单粗暴的办法,也是鸵鸟策略,不检查直接生成不就行了。

npm run build-only

也就是 vite build,能正确生成。
鸵鸟策略

2. 按照出错的问题修改

忽略掉总是不好,那么,可以修改出错的地方,这里主要是 AJAX 返回的 devices 的类型问题,因为是 JSON 返回,可以考虑为 any 类型,于是进行了局部的修改:

const devices = ref<any>([]);

再次执行含 type-check 的生成命令

npm run build

错误提示消失。

这篇关于TypeScript类型检查错误 error TS2339的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118654

相关文章

检查 Nginx 是否启动的几种方法

《检查Nginx是否启动的几种方法》本文主要介绍了检查Nginx是否启动的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 systemctl 命令(推荐)2. 使用 service 命令3. 检查进程是否存在4

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

解决java.util.RandomAccessSubList cannot be cast to java.util.ArrayList错误的问题

《解决java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList错误的问题》当你尝试将RandomAccessSubList... 目录Java.util.RandomAccessSubList cannot be cast to java.

Java编译错误java.lang.NoSuchFieldError的解决方案详析

《Java编译错误java.lang.NoSuchFieldError的解决方案详析》java.lang.NoSuchFieldError是Java中的一种运行时错误,:本文主要介绍Java编译错... 目录前言解决方案1. 统一JDK版本环境2. 优化maven-compiler-plugin配置3. 清

python中的鸭子类型详解

《python中的鸭子类型详解》鸭子类型是Python动态类型系统的灵魂,它通过强调“行为”而非“类型”,赋予了代码极大的灵活性和表现力,本文给大家详细介绍python中的鸭子类型,感兴趣的朋友一起看... 目录1. 核心思想:什么是鸭子类型?2. 与“传统”静态类型语言的对比3. python 中无处不在

Navicat连接Mysql8.0.11出现1251错误的解决方案

《Navicat连接Mysql8.0.11出现1251错误的解决方案》在重装电脑并安装最新版MySQL后,Navicat和Sqlyog连接MySQL时遇到的1251和2058错误,通过将MySQL用户... 目录Navicat连接mysql8.0.11出现1251错误原因分析解决问题方法有两种总结Navic