typescript - @types/react-table:如何为我的包的用户包含配置的类型?
问题描述
上下文:我们正在开发一个带有 React 和 TypeScript 的 UI 组件库,并react-table
用于我们的表格组件。该库作为 npm 包发布并在我们的其他项目中使用。
我已经配置了文件中@types/react-table
描述的类型,文件名为react-table-config.d.ts
. 此外,我创建了一个新类型CustomColumn
。它基于Column
定义并扩展其功能以支持嵌套的字符串访问器(以便 TypeScript 可以识别foo.bar
给定表数据是否是有效的字符串访问器)。
目标:我想为我们的图书馆用户提供这种改进的 TypeScript 支持。我特别希望他们能够使用CustomColumn
.
问题:
当我在另一个项目中安装库包时,我无法访问我为react-table
. 它们甚至不包含在包装中。
如果可能的话,我想避免为打字发布单独的包,尽管我认为这种方法会起作用。
到目前为止我所尝试的:
我很惊讶这并没有立即奏效,因为我们成功地扩展了 Emotion-Theme 与扩展类型声明的类似机制。为了使库的用户可以使用自定义主题,我们简单地重命名emotion.d.ts
为emotion.ts
.
我已经对react-table-config.d.ts
(=> react-table-config.ts
) 进行了同样的尝试,但遇到了很多 TypeScript 错误,因为虽然文档和当前的 TypeScript 礼仪建议使用Record<,>
, 在来自 distinctlyTyped 的实际类型定义中,但它们在其泛型中使用对象。
在解决了产生的类型冲突之后,react-table-config.d.ts
现在由转译器生成并包含在包中,但是当我在其他项目中使用它们时,我的自定义类型仍然没有被使用。
到目前为止我尝试过的其他事情:
- 适配组件
compilerOptions.typeRoots
库tsconfig.json
- 适应
compilerOptions.paths
“tsconfig.json
使用”库 - 更改导入以尝试制作
react-table-config.d.ts
环境模块,如本答案中所述 /// <reference path="../../@types/react-table-config.ts"/>
在index.ts
我(尝试)重新出口的地方使用Cell
和CustomColumn
.
我真的很想了解为什么这不起作用,尤其是因为 Emotion 的 Theme overwrite 正在起作用。我可以指出的不同之处在于,Emotion 立即支持 TypeScript,因此这些类型没有单独的包。
如果有任何特定的代码会有所帮助,我会尝试提供它(如果可能的话) - 但由于这更像是一个系统性问题,我不想不加选择地发布代码。
解决方案
推荐阅读
- javascript - 从标记查找给定半径内的密码列表
- css - 修复后 Safari 背景颜色过渡为透明。漏洞?
- python - 用管道分隔符替换制表符
- api - 从 Trello 的 API (client.js) 获取用户 ID
- python - 如何识别包含多个单词的字符串
- python - 从 @cuda.jit numba 函数中调用其他函数
- python-3.x - 是否有一个 Pyhon 模块可以从 Oracle 读取并拆分为多个基于列的内存使用量较少的 excel 文件?
- redis - 利用 Redis 设置和检索位
- c# - C# ASMX Service throwing 内容类型 text/html; charset=UTF-8 的响应信息与内容类型不匹配错误
- shell - 如何将文件中的字符串添加到匹配的文件中