typeScript在vue项目中常见用法

WebStorm + Vite + TypeScript + Vue3 项目别名配置全攻略:告别 ‘Cannot find module @/*‘ 错误 本文详细解析了在WebStorm + Vite + TypeScript + Vue3项目中配置路径别名的完整方案,帮助开发者彻底解决'Cannot find module @/*'错误。通过五步配置流程,包括Vite、TypeScript和WebStorm的协同设置,确保开发和生产环境都能正确识别别名路径,提升开发效率。 阅读详情

一,模板中的 TypeScript

在使用了 <script lang="ts"> 或 <script setup lang="ts"> 后,<template> 在绑定表达式中也支持 TypeScript。

<script setup lang="ts">
let x: string | number = 1
</script>

<template>
  <!-- 出错,因为 x 可能是字符串 -->
  {{ x.toFixed(2) }}
</template>

可以使用联合类型强制转换解决此问题:

<script setup lang="ts">
let x: string | number = 1
</script>

<template>
  {{ (x as number).toFixed(2) }}
</template>

二,为组件的prop标注类型

2.1当使用 <script setup> 时,这个 defineProps() 宏函数支持从它的参数中推导类型
<script setup lang="ts">
const props = defineProps({
  foo: { type: String, required: true },
  bar: Number
})

props.foo // string
props.bar // number | undefined
</script>

这被称之为 运行时声明 ,因为传递给 defineProps() 的参数会作为运行时的 props 选项使用。

2.2 然而,通过泛型参数来定义 prop 的类型通常更直接
<script setup lang="ts">
const props = defineProps<{
  foo: string
  bar?: number
}>()
</script>

这被称之为“基于类型的声明”。编译器会尽可能地尝试根据类型参数推导出等价的运行时选项。

我们也可以将 prop 的类型移入一个单独的接口中:

<script setup lang="ts">
interface Props {
  foo: string
  bar?: number
}

const props = defineProps<Props>()
</script>
2.3 Prop 默认值

当使用基于类型的声明时,我们失去了对 prop 定义默认值的能力。这可以通过目前实验性的响应性语法糖来解决:

<script setup lang="ts">
interface Props {
  foo: string
  bar?: number
}

// 对 defineProps() 的响应性解构
// 默认值会被编译为等价的运行时选项
const { foo, bar = 100 } = defineProps<Props>()
</script>

三,为组件的 emit 标注类型

在 <script setup> 中,emit 函数的类型标注可以通过运行时声明或类型声明进行

<script setup lang="ts">
// 运行时
const emit = defineEmits(['change', 'update'])

// 基于类型
const emit = defineEmits<{
  (e: 'change', id: number): void
  (e: 'update', value: string): void
}>()
</script>

这个类型参数应该是一个带调用签名的类型字面量。这个类型字面量的类型就是返回的 emit 函数的类型。我们可以看到,基于类型的声明使我们可以对所触发事件的类型进行更细粒度的控制。

如何在Vue3项目中引入TypeScript 在这篇文章中,我们将一步步指导你如何在Vue3项目中引入TypeScript。TypeScript是一种强类型的JavaScript超集,可以帮助我们在编写代码时避免许多错误,提高代码的可维护性。在Vue组件中使用TypeScript非常简单,只需要在``标签中添加`lang="ts"`。为了让TypeScript更好地发挥作用,需要安装一些类型声明文件。至此,您已经成功地在Vue3项目中引入了TypeScript。按照提示进行初始化配置,选择手动配置,并确保选择Vue 3选项。 阅读详情

相关推荐

gitlab远程子仓库配置SSH - 保姆级教程

在网上搜索了一些方法,但是不够详细,走了好多弯路,所以记录下配置SSH的详细过程吧。

是菠萝的博客 1万+

<script setup> 实战模式:大型组件怎么拆?

<script setup> 实战模式:大型组件怎么拆

ZZZxxA123的博客 564

发那科机器人Modbus通讯配置全攻略:从IP设置到信号调试

本文详细介绍了发那科机器人Modbus通讯的配置方法,从基础认知到IP设置、端口配置、信号调试及故障排查。重点讲解了UOP和DI/DO信号的配置技巧,帮助工程师快速实现机器人与PLC的稳定通讯,提升自动化系统效率。

weixin_27872611的博客 620

Vue3 + TypeScript 相关代码写法合集

1、深层查找写法。

weixin_50450473的博客 4617

ADS谐波平衡仿真自动优化报错?三步搞定HB控件设置(附常见错误排查)

本文针对ADS谐波平衡仿真在自动优化中常见的报错问题,提供了三步核心排查法。首先检查并禁用HB控件中可能导致冲突的小信号仿真模式,其次合理化仿真频率与扫描参数设置,最后审视优化变量与目标的定义。通过精准配置HB控件以适配自动优化流程,能有效解决大多数仿真失败问题,确保非线性电路设计顺利进行。

c2d3e4f的博客 786

Windows Pychram部署Unet++过程

windows系统 在pycharm平台上配置并跑通Unet网络 这里我用的是B站课程里的资源《唐宇迪Unet图像分割语义分割实战》

ArcGis_Niu的博客 803

Vue2+typescript写法总结

之前不是ts写的老项目,想接入ts,首先使用vue命令安装typescript 下面依次对安装过程中出现的选项进行解释 最后这里回车过后就可以继续安装ts了。安装过程中,可能出现如下错误: ERROR Error: Cannot find module ‘@vue/cli-plugin-router/generator/template/src/views/HomeView.vue’ from ’ xxx 或者 ERROR Error: Cannot find module ‘@vue/cli-plu

东扯葫芦西扯瓜——前端小菜鸟的博客 6562

避坑指南:用逐飞开源库驱动MT9V03X摄像头时容易忽略的3个细节(附TFT显示优化技巧)

本文详细解析了在智能汽车竞赛中使用MT9V03X摄像头(总钻风)时常见的硬件连接、图像采集和TFT显示优化问题。重点介绍了逐飞开源库中容易被忽略的三个关键细节,包括电源管理、看门狗设置和中断优先级配置,并提供了针对IPS200和TFT180显示屏的优化技巧,帮助参赛队伍提升图像处理效率和显示质量。

study的专栏 742

<script setup lang=“ts“>的说明

标签语法,用于在组件中使用 “Composition API” 的语法,并且它使得编写逻辑更加简洁和清晰。时,请尽量避免同时使用传统 Options API 的写法,而是专注于使用 Composition API 的方式组织你的组件逻辑。中尝试使用传统 Options API 的方式,Vue 会产生一个警告,并且这样的写法可能导致代码冗余和混乱,从而失去了。这样可以大大简化组件的代码,并且更容易阅读和维护。的设计目标是为了简化组件代码,通过使用 Composition API 的函数式风格来组织逻辑。

chen的博客 4817

字符串相似度比较算法:Jaro–Winkler similarity的原理及实现

前言 在前面的文章中,笔者有对编辑距离以及Levenshtein距离进行详细的说明,其实levenshtein距离是编辑距离的其中一种定义,本文所说的Jaro距离是编辑距离的另外一种定义,它也是对两个字符串的相似度进行衡量,以得出两字符串的相似程度。下面我们一起来学习这个算法的原理以及实现吧。 标题算法定义 下面先说说Jaro distance(又称Jaro similarity),这是由Matt...

蓝天白云梦的csdn博客 1万+

存储关键技术·RAID技术·RAID2.0·华为RAID2.0+·华为服务器·云计算

一.RAID基本概念 常见的RAID级别组合RAID级别 二.RAID的数据组织形式 三.RAID的数据保护功能 方法一:镜像方法二:奇偶校验算法(XOR) 四.RAID热备和重构 1.热备(Hot Spare)的定义2.热备的分类3.热备的工作原理 五.RAID 2.0技术 1.RAID 2.02.RAID 2.0+3.华为RAID 2.0+ 六.RAID 2.0+块虚拟化技术 1.什么会出现RAID 2.0+技术?2.什么是RAID 2.0?3.RAID 2.0+的原理是什么?

qq_47480932的博客 3319

【总结】Typescript 结合Vue3的写法

Vue 3与TypeScript结合使用能够提供类型检查和智能提示,增强了代码的可靠性和可维护性。本文整理了项目开发时用到的结合写法,供学习和参考。

有事儿私信。 1071

【PCIe 总线及设备入门学习专栏 6.1 -- PCIe MCTP】

MCTP 是由 DMTF(Distributed Management Task Force)定义的协议,用于提供设备和主机间基于不同传输层(如 PCIe、I²C、USB 等)的管理消息通信能力。在 PCIe 环境下,MCTP 消息作为的一种特殊形式传输,并被赋予唯一的 VDM Code 值0000b,以区别于其他 VDM。MCTP 在 PCIe 环境中作为一种基于 Type 1 VDM 的管理通信协议,提供了设备与主机之间的灵活数据传输能力。

CodingCos的博客 2127

TypeScript Vue TodoMVC 项目常见问题解决方案

TypeScript Vue TodoMVC 项目常见问题解决方案 1. 项目基础介绍 TypeScript Vue TodoMVC 是一个使用 TypeScript 和 Vue.js 编写的 TodoMVC 示例应用程序。TodoMVC 是一个流行的框架,用于展示不同 JavaScript 框架和库的对比实现。该项目旨在提供一个简单明了的待办事项列表管理应用,通过这个项目可以学习 TypeScr...

gitblog_01181的博客 857

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

探索 Vue 3 与 TS 项目中 Ant Design Vue 的常见用法

Ant Design Vue 在 Vue 3 和 TS 项目中提供了丰富的组件和强大的功能,通过合理地使用这些组件,并结合 Vue 3 和 TS 的特性,如响应式编程、类型检查等,可以快速构建出高效、美观且易于维护的前端应用程序。无论是简单的按钮、复杂的表单,还是数据展示的表格,Ant Design Vue 都能满足我们的需求,同时其样式定制和主题切换功能也为项目的个性化和用户体验优化提供了支持。在实际项目开发中,不断探索和实践这些常见用法,将有助于提升我们的开发效率和项目质量。

m0_57836225的博客 1600

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TypeScript 基础入门:在 Vue/uni-app 项目中理解常见类型

TypeScript 基础类型在 Vue/uni-app 中的应用 本文介绍了 TypeScript 在 Vue/uni-app 项目中的基础类型用法,包括: 类型推断:自动推断变量类型 函数类型:参数和返回值类型约束 字面量类型:限制变量为固定值 联合类型:变量可为多种类型之一 any与unknown:处理不确定类型,unknown更安全 类型断言:强制指定类型 void与never:函数返回值类型 Vue中ref的泛型写法:明确响应式数据类型 文章通过实际代码示例,对比了不同类型的特点和使用场景,特别强

前端开发努力中! 359

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【2025全新】Soybean Admin调试终极指南:从TypeScript到Vue的全链路解决方案

开发Soybean Admin项目时,你是否经常遇到: - TypeScript类型报错却找不到源头? - Vue组件状态异常但无从排查? - 接口请求失败却不知是前端还是后端问题? - 生产环境bug在开发环境无法复现? 本文将提供一套完整的调试解决方案,帮助你从根本上解决这些问题,大幅提升开发效率。 读完本文后,你将能够: - 掌握VSCode调试Soybean Admin的最佳配置 - ...

gitblog_00634的博客 684

Vue 3 + TypeScript 终极指南:提升你的前端开发体验

希望这篇指南对你有帮助!如果有问题,欢迎留言讨论。结合二者可以显著提升开发效率和代码质量。,而 TypeScript 提供了。如果你正在开发大型前端应用,

a181001_的博客 786

告别类型错误!vue-awesome-swiper TypeScript完全指南:从类型定义到实战应用

你是否在Vue项目中使用Swiper时遇到过类型错误?是否因为缺少类型提示而降低开发效率?本文将带你全面掌握vue-awesome-swiper的TypeScript支持,从类型定义文件解析到实际应用场景,让你的轮播组件开发既安全又高效。读完本文,你将能够:理解类型定义文件结构、正确配置开发环境、解决常见类型问题、优化组件类型推断。 ## 项目概述与核心文件 vue-awesome-swipe

gitblog_00615的博客 1082

Vue3+TypeScript 完整项目上手教程

转自:Vue3拥抱TypeScript的正确姿势 :https://juejin.im/post/6875713523968802829一个完整的Vue3+Ts项目,支持.vue和.ts...

程序员成长指北 4万+

Vue3 携手 TypeScript 搭建完整项目结构

TypeScript 是JS的一个超集,主要提供了类型系统和对ES6的支持,使用 TypeScript 可以增加代码的可读性和可维护性,在 react 和 vue 社区中也越来越多人开始使用TypeScript。从最近发布的 Vue3 正式版本来看, Vue3 的源码就是用 TypeScript 编写的,更好的 TypeScript 支持也是这一次升级的亮点。当然,在实际开发中如何正确拥抱 TypeScript 也是迁移至 Vue3 的一个小痛点,这里就针对 Vue3 和 TypeScript 展开一些交流

功能总结 6051

Vue-Cli 创建 TypeScript 项目

Vue-Cli 创建 TypeScript 项目

m0_54158068的博客 2169

TypeScript及TypeScript在vue3.0项目中的基本使用

一、 TypeScript是什么 TypeScript 是一种由微软开发的自由开源的编程语言,主要提供了类型系统和对 ES6的支持。它是JavaScript的一个超集,扩展了JavaScript的 语法,因此现有的 JavaScript 代码可与TypeScript 一起工作无需任何修改。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript可以运行在任何浏览器上。 TypeScript 是 Angular2、vue3的开发语言

Jeasu_0908的博客 2万+

【VUE实战项目】使用typescript重构项目

vue实战系列之typescript重构项目

BugMan的博客 2352

Vue.js 与 TypeScript 集成开发之在 Vue 项目中使用 TypeScript

选择 TypeScript 开发 Vue 应用有诸多优势,包括静态类型检查、智能提示、增强代码可维护性、更安全的重构以及对最新 ECMAScript 特性的支持。在新项目中,你可以直接通过 Vue CLI 或 Vite 创建一个基于 TypeScript 的项目;对于现有项目,逐步迁移和添加类型声明也是一个非常可行的方案。通过配置 ESLint 和 Prettier,可以进一步保证代码风格一致,确保代码质量。

轻口味的专栏 1938
上一篇: 采用Opserver来监控你的ASP.NET项目系列(一、Opserver监控的简介与平台搭建)
下一篇: systemctl命令列出所有服务
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值