FEMessage 基础 TypeScript 类型声明文件
主要用于存放 FEMessage 组件库的底层依赖包的 TypeScript 类型声明,让 FEMessage 组件库的使用者无论安装哪个 Fork 版的底层依赖,都能正常使用类型声明。
目前已有的依赖库类型声明:
- Element
- 后续有需要会增加其它...
此仓库的类型声明文件是由官方包复制出来的,没有作任何修改。
yarn add -D @femessage/types
import { Table,Form } from '@femessage/types/element-ui'
给 FEMessage 组件库增加 .d.ts
文件时发现存在这个问题:由于有部分组件需要依赖 Element 导出的类型声明,FEMessage 组件库依赖的是官方的 Element,但有可能 FEMessage 组件库的使用者在使用其它 Fork 出来的 Element(例如 @femessage/element-ui),这将导致部分 FEMessage 的类型声明无法正常使用。
综合考虑,解决方案是将 Element 的类型声明文件拷贝到此仓库,FEMessage 组件库需要依赖 Element 导出的类型,则使用这里的类型文件。
这就意味着,无论 FEMessage 的使用者安装的是官方 Element 还是 Fork 的 Element,都不会影响 FEMessage 组件的类型声明。
上面只是拿 Element 举个例子,实际上 FEMessage 组件库所依赖到的 UI 库都会存在该问题,例如:Vant。
而如果 FEMessage 的使用者安装的 Element 是一个进行较大改动,影响到 API
,那应该怎么办呢?
举个例子,假设使用者安装的是一个对 el-table
组件进行过 API
改动的 Fork Element,由于 API
已经不一致,这也导致类型声明对应不上,所以无法正常使用依赖了此仓库的 FEMessage 组件。
如果出现这种情况,解决方案的操作步骤:
- 将类型声明对应不上的 FEMessage 组件的
.d.ts
文件拷贝到项目本地 - 将本地的
.d.ts
文件中的@femessage/types
替换成项目使用的 Element 路径
- import { Table } from '@femessage/types/element-ui'
+ import { Table } from 'element-ui'
目前有以下组件在依赖:
- el-data-table
- el-data-tree
- el-form-renderer
注意:此列表不一定能够及时更新,实际情况可以看组件的 package.json
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!