TypeScript 两个文本完全相同的类型不能进行交叉赋值,

cclgggtu  于 6个月前  发布在  TypeScript
关注(0)|答案(6)|浏览(42)

🔎 搜索词

"类型不兼容", "fastify"

🕗 版本与回归信息

  • 当我想测试链接的包时,这会破坏我的应用程序。

⏯ Playground链接

  • 无响应*

💻 代码

包含解释的可复现仓库。
https://github.com/TMaszko/ts-bug-main

😞 实际行为

具有不匹配版本的两个代码相同的包在链接包的node_modules package package.json中出现错误。

🙂 预期行为

如果包在代码上相同且仅版本不匹配,则不应出现任何错误。

关于问题的附加信息

当链接包的包版本 fastify2 与原始 fastify 不同时,会出现类型不兼容的错误。当版本对齐时,则不会有错误。可能与通用类型有关,因为如果我从两个类型定义中删除一些属性,错误也会消失。例如:

  1. 主项目fastify中的包版本 -> 4.23.2
  2. 主项目fastify2中的包版本 -> 4.23.1(仅在package.json中手动更改了包版本)
jecbmhm3

jecbmhm31#

我们需要一个实际的复现案例,以便进一步调查。

jtjikinw

jtjikinw2#

@RyanCavanaugh 为方便错误复现添加了仓库。

mkshixfv

mkshixfv3#

我不明白你为什么说这是错误的。这个错误是100%正确的,代表了你在运行时实际遇到的问题,如果你让这个继续进行下去。

zzwlnbp8

zzwlnbp84#

两个node_modules中的类型在代码上是完全相同的,唯一的区别是我更改了链接包中的版本号(两个仓库中的fastify版本都是4.23.2,但我只是通过更改fastify包中的版本号将链接包手动降级为4.23.1)。为什么会引发任何问题?

ni65a41a

ni65a41a5#

这不是一个“由npm link引起的问题”,而是一个“两个文本完全相同的类型不能交叉赋值”的错误。请为后者提供一个最小的复现示例。

alen0pnh

alen0pnh6#

@RyanCavanaugh 我不知道如何以其他方式重现它,说实话:(。如果版本匹配,错误就会消失。
编辑:我想我知道怎么做了。我会尽快更新主仓库,并将此问题的描述也一并更新。

相关问题