在vue项目中使用TS

news/2024/9/24 21:21:51/

在vue项目中使用TS

1. 将vue项目注入ts 引入和使用

webpack的打包配置:vue-cli webnpack 编译时

entry 入口 设置

entry: {app: './src/maikn.ts'
}

2. resolve: extensions 添加 ts 用于处理尝试的数据尾缀列表

  • 问: 如何在webpack新增处理类型文件: resolve配置项的extension里添加ts文件

TS 配置文件: typeScript.ts

vue/vuex + ts

1. 定义组件的方式上: 形式上:

import vue from 'vue'
const Compoinent = Vue.extend({// 类型
})

2. 注入实例: 使用官方工具:vue-class-component

  • 相当于给vue 添加了一个类装饰器的能力 从而实现实例 的注入
 import Component from 'vue-class-component'export default class myComponent extends Vue {message: string = 'hello'onClick(): void {console.log(this.message)}}

3. 独立模块的声明: 利用 ts的额外补充模块 declare实现 使之可以被独立引用

declare module '*.vue' {import Vue from 'vue'export default vue
}
declare module 'typings/vuePlugin.d.ts'{interface Vue {myProps: string}
}
// 实例中使用
let vm = new Vue()
console.log(vm.myProps)

4. props = 提供propType原地声明联合变量

import { propType } from 'vue'
interface customPayload {str: string,number: number,name: string
}const  Component = Vue.extend({pros: {name: String,success: {type: String},payLoad: {type: Object as propType<customPayload>},callback: {type: Function as propType<() => void>}}
})

5. computed 和 methods

computed: {getMsg():string {return this.click() + '!'}
},
methods: {click(): string {return this.message + 'zhaowa'}
}

6. vuex的接入 - 声明使用

// vuex.d.ts声明模块 - ComponentCustomProperties
declare module '@vue/runtime-core' {interface State {count: number}interface ComponemtCustomProperties {$store: Store<State>}
}

7. api形式编码实现

// store.ts - 状态机侧
import { InjectionKey } from 'vue'
import {createStore,Store
} from 'vuex'
export interface State {count: number;
}
export const key: InjectionKey<Store<State>> = Symbol()
export const store = createStore<State>({state: {count: 0}
})
// main.ts - 入口侧代码
import { createApp } from 'vue'
import { store, key } form './store'
const app = createApp({// 参数
})
// 利用了provide。inject
app.use(store, key)  
//  => 传入injectionkey 
app.mount('#app')//  消费方
import { useStore } from 'vuex'
import { key } from './store'
export default {const store = useStore(key)// store.state.count
}

8. vuex面向对象 (装饰器 结构更加统一) - 使用vuex-class 工具

import { State. Action, Getter } from "vuex-class"
export defaulty class App extends Vue {// 利用属性装饰器整合store的状态@store login: boolean// 利用事件装饰器整合store方法@Action setInit: ()=> voidget isLogin: booleanmounted() {this.setInit()this.isLogin = this.login}
}

http://www.ppmy.cn/news/1435244.html

相关文章

mermaid 之 (Flowchart) 流程图

(Flowchart) 流程图是一种在Mermaid中常用的图形&#xff0c;用于描述一系列步骤和决策。以下是Mermaid中创建流程图的详细语法介绍&#xff1a; 前言 官网文档 基础语法 图的方向 graph TD&#xff1a;从上到下 (Top Down)graph LR&#xff1a;从左到右 (Left to Right)g…

4. HTTPS通信(握手)过程

HTTPS的通信过程如下&#xff1a; 客户端向服务器发起请求&#xff0c;请求中包含使用的协议版本号、生成的一个随机数、以及客户端支持的加密方法。服务器端接收到请求后&#xff0c;确认双方使用的加密方法、并给出服务器的证书、以及一个服务器生成的随机数。客户端确认服务…

ASP.NET教务平台—学籍管理模块开发与设计

摘 要 教务平台之学籍管理模块是一个典型的教务信息管理系统(MIS)&#xff0c;其开发主要包括后台数据库的建立和前端应用程序的开发两个方面。对于后台数据库要求实现数据的完整性、一致性和安全性&#xff1b;对于前台应用程序开发则要求模块功能完备、界面友好、易使用等特…

Linux上部署Jupyter notebook

安装jupyter notebook pip install notebook #或者 conda install notebook配置 jupyter notebook --generate-config## The IP address the notebook server will listen on. # Default: localhost # 设置可以访问的ip, 默认是localhost, 将其改为 * c.NotebookApp.ip *#…

Pandas 2.2 中文官方教程和指南(十七)

原文&#xff1a;pandas.pydata.org/docs/ 重复标签 原文&#xff1a;pandas.pydata.org/docs/user_guide/duplicates.html Index对象不需要是唯一的&#xff1b;你可以有重复的行或列标签。这一点可能一开始会有点困惑。如果你熟悉 SQL&#xff0c;你会知道行标签类似于表上的…

MP2110A Anritsu 安立 采样示波器 眼图设备 简述

MP2110A是一款集成了误码率测试仪&#xff08;BERT&#xff09;和采样示波器的一体化测量仪器&#xff0c;主要用于光学模块的误码率&#xff08;BER&#xff09;测量、眼图分析等评估操作。它支持从10G到800G的光学模块制造过程中的检测分91522。MP2110A内置4通道采样示波器&a…

基于STM32和阿里云的智能台灯(STM32+ESP8266+MQTT+阿里云+语音模块)

一、主要完成功能 1、冷光模式和暖光模式两种灯光 主要支持冷光和暖光模式两种&#xff0c;可以通过语音模块或手机app远程切换冷暖光 2、自动模式和手动模式 主要支持手动模式和自动两种模式&#xff08;app或语音助手切换&#xff09; (1)自动模式&#xff1a;根据环境光照…

Flutter-自定义画板

效果 功能 支持绘制线、圆、矩形&#xff0c;支持拓展支持撤回上一步支持清空画板支持自定义画笔颜色&#xff0c;宽度 实现 定义绘制类型 /// 类型 enum ShapeType {//线line,//圆circle,//矩形rectangle,//拓展 }定义绘制抽象类 import dart:ui;/// 绘制抽象类 abstract…