这两天开发了一个组件,开发好之后想着先本地npm link 用一用试试,然后在vue3 项目中link了过来,发现VSCODE没有属性提示,鉴于考虑到一个好的组件应该是提示友好的,于是给组件准备加上属性提示。

首先,我的组件包名叫 "xxx-xx"这种,然后我是提供了全局安装和仅导入组件的方式

import ErasableLayer from "./ErasableLayer.vue";
import { createApp } from 'vue'; export { ErasableLayer };
export default {
install(app: ReturnType<typeof createApp>) {
app.component("ErasableLayer", ErasableLayer);
}
};

于是写类型文件的话,就要按照入口文件的内容来写

declare module "erasable-pkg" {
import { App, DefineComponent } from "vue"; export const ErasableLayer: DefineComponent<{
layerColor?: string;
renderLayer?: (ctx: CanvasRenderingContext2D, w: number, h: number) => void;
}, {}, {
done: () => void;
}>; export default {
install(app: App) {
app.component("ErasableLayer", ErasableLayer);
},
};
}

首先定义一个module表示我这个模块,然后借用Vue的DefineComponent来生成我的组件的属性,和emit事件的类型,

然后导出一个vue.use安装插件的方法,最后需要在你的包的package.json中指定你的types,

{
"name": "erasable-pkg",
"version": "1.0.0",
"description": "",
"main": "./dist/index.js", "types": "./types/index.d.ts"
}

这样的话,在使用组件的时候就会有属性提示了,如图:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

经过我测试,发现VSCode是可以提示的,webstorm属性提示加载不出来。

开发一个属性名提示友好的Vue组件的更多相关文章

  1. Vue (表单、斗篷、条件、循环指令,分隔符成员、计算属性成员、属性的监听、vue组件、子组件、各个常见的钩子函数)

    表单指令 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF- ...

  2. 【vue系列之三】从一个vue-pdf-shower,说说vue组件和npm包

    前言 从去年年初开始,自己便下决心要写一个vue系列的博客,但时至今日,才写系列的第三篇博客,想来甚是惭愧. 但是慢归慢,每一篇都要保证质量,以及要写出自己的心路历程,防止自己工作中填的坑再让读者走一 ...

  3. iOS开发之--属性关键字以及set和get方法

    一.属性分为三大类 1.读写性控制 a.readOnly只读,只会生成get方法,不会生成set方法 b.readWrite可读可写,会生成set方法,也会生成get方法(默认设置) 2.setter ...

  4. ES6 动态计算属性名

    在ES5之前,如果属性名是个变量或者需要动态计算,则只能通过 对象.[变量名] 的方式去访问. <script type="text/javascript"> var ...

  5. geotools修改shapefile 属性名乱码问题

    在GeoServer中文社区的讨论地址为:http://opengeo.cn/bbs/read.php?tid=1701&page=e&#a 使用geotools修改shapefile ...

  6. vue组件---组件注册

    (1)组件名 在注册一个组件的时候,我们始终需要给它一个名字.比如在全局注册的时候我们已经看到了: Vue.component('my-component-name', { /* ... */ }) ...

  7. vue组件知识总结

    vue组件化开发 将一个页面分割成若干个组件,一个页面js+css+html,将自己类容分割出来,方便开发,更好了维护我们的代码,每个组件封装自己的js+html+css,样式命名冲突 组件分类 页面 ...

  8. 自定义Vue组件打包、发布到npm以及使用

    本文将帮助:将自己写的Vue组件打包到npm进行代码托管,以及正常发布之后如何使用自己的组件. 本文讲述的仅仅是最基础的实现,其他复杂的操作需要非常熟悉webpack的相关知识,作者将继续学习. 先附 ...

  9. Vue 组件间的传值(通讯)

    组件之间的通讯分为三种 父给子传 子给父传 兄弟组件之间的通讯 1 父组件给子组件传值 子组件嵌套在父组件内部,父组件给子组件传递一个标识,在子组件内部用props接收,子组件在模板里可以通过{{}} ...

  10. Vue组件以及组件之间的通信

    一.组件的注册 1. 全局组件注册 1. 注册基本语法Vue.component Vue.component("my_header", { template: `<div&g ...

随机推荐

  1. JVM是如何创建一个对象的?

    哈喽,大家好,我是世杰. 本文我为大家介绍面试官经常考察的「Java对象创建流程」 照例在开头留一些面试考察内容~~ 面试连环call Java对象创建的流程是什么样? JVM执行new关键字时都有哪 ...

  2. 松灵机器人scout mini小车 自主导航(2)——仿真指南

    松灵机器人Scout mini小车仿真指南 之前介绍了如何通过CAN TO USB串口实现用键盘控制小车移动.但是一直用小车测试缺乏安全性.而松灵官方贴心的为我们准备了gazebo仿真环境,提供了完整 ...

  3. [Java SE] Java-文件系统-常用文件路径的获取方法

    1 获取相对路径 /** * 获取相对路径 [推荐] * 使用Java提供的Path类和Paths类来获取相对路径. * 例如,假设有两个路径a和b,我们可以使用Path类的relativize()方 ...

  4. JavaScript处理后端返回PDF文件流,在线预览下载PDF文件

    在实际开发业务中,遇到这一需求,即后端返回的pdf文件,是以base64文件流的方式,在此不便操作接口响应等操作,便以上传一个文件转化为文件流的形式模拟 实际应用时,base64Img = res.d ...

  5. oeasy教您玩转linux 010216 随机诗词 fortunezh

    我们来回顾一下 上一部分我们都讲了什么? 下载fortune 输出重定向到cowsay 多重输出重定向 fortune的细节 有没有中️文的fortune呢 # 搜索一下fortune apt sea ...

  6. [oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear

    teletypewriter 历史 回忆上次内容 上次见到了一个真的机械打字机 感受到了蒸汽朋克的时代背景 上上次区分了一些概念 terminal终端,电脑连线最终的端点 TeleTYpewriter ...

  7. Python Kafka客户端confluent-kafka学习总结

    实践环境 Python 3.6.2 confluent-kafka 2.2.0 confluent-kafka简介 Confluent在GitHub上开发和维护的confluent-kafka-pyt ...

  8. UE-自带的HotUpdate【转】

    原文链接:https://baijiahao.baidu.com/s?id=1745200406976270792&wfr=spider&for=pc 这是百度可以直接搜索到的 UE4 ...

  9. DSCL:已开源,北京大学提出解耦对比损失 | AAAI 2024

    监督对比损失(SCL)在视觉表征学习中很流行.但在长尾识别场景中,由于每类样本数量不平衡,对两类正样本进行同等对待会导致类内距离的优化出现偏差.此外,SCL忽略了负样本之间的相似关系的语义线索.为了提 ...

  10. OI生涯回忆&退役之后

    一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的进程 --<庄子·秋水> 好吧,现在是2024年7月24日,我现在正坐在某编程机构的办公室电脑旁,写下这些文字,是啊,我已经退役将近两 ...