这两天开发了一个组件,开发好之后想着先本地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. Mac 设置多个版本JDK

    控制台: p.p1 { margin: 0; font: 11px Menlo; color: rgba(0, 0, 0, 1) } span.s1 { font-variant-ligatures: ...

  2. SQLServer 的Distinct

    distinct去除重复的数据(distinct是对整个结果集进行数据重复处理,不是针对某一列) -> 检查返回不重复的数据(对于整条记录不重复才会去除,如ID不一样) 用法:select di ...

  3. 网易数帆内核团队:memory cgroup 泄漏问题的分析与解决

    memory cgroup 泄露是 K8s(Kubernetes) 集群中普遍存在的问题,轻则导致节点内存资源紧张,重则导致节点无响应只能重启服务器恢复:大多数的开发人员会采用定期 drop cach ...

  4. [oeasy]python0085_[趣味拓展]字体样式_下划线_中划线_闪动效果_反相_取消效果

    字体样式 回忆上次内容 \033 xm 可以改变字体样式 0m - 10m 之间设置的 都是字体效果 0m 复原 1m 变亮 2m 变暗     ​   添加图片注释,不超过 140 字(可选)   ...

  5. [oeasy]python0122_日韩字符_日文假名_JIS_Shift_韩国谚文

    日文假名和韩国谚文 回忆上次内容 上次回顾了非ascii的拉丁字符编码的进化过程 0-127 是 ascii 的领域   世界各地编码分布 拉丁字符扩展 ascii 共 16 种 由iso组织制定 从 ...

  6. oeasy教您玩转vim - 50 - # 命令行效率

    ​ 命令行效率 回忆上节课内容 总结 我们上次研究的是范围命令执行方法 批量控制缩进 :20,40> 批量执行普通模式下的命令 :4,10normal A; 直接切换到全屏命令模式 ex-mod ...

  7. [MRCTF2020]Ezpop(反序列化)

    打开题目即可得源码 Welcome to index.php <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ct ...

  8. OpenGL book note

    OpenGL Shading language 4.0vertex shader geometry shader: 格式解释 https://blog.csdn.net/hankern/article ...

  9. 机器学习:详解多任务学习(Multi-task learning)

    详解多任务学习 在迁移学习中,步骤是串行的,从任务\(A\)里学习只是然后迁移到任务\(B\).在多任务学习中,是同时开始学习的,试图让单个神经网络同时做几件事情,然后希望这里每个任务都能帮到其他所有 ...

  10. 对精确率(P)、召回率(R)、F1值的理解以及对应的实现

    对精确率.召回率.F1值的理解 算法理解 在机器学习中,P.R和F1值在各种评测中很常见,那么到底什么是P.R.F1值呢,怎么理解呢,困扰了很多人,下面给我对P.R.F1值的理解, 首先,我们先看一个 ...