Bug报告
🔎 搜索词
is referenced directly or indirectly in its own type annotation
directly or indirectly
own type annotation
🕗 版本与回归信息
- 这是一次崩溃
- 我最初在4.3.2中看到这个问题,现在在4.4.4中仍然可以收到
⏯ Playground链接
包含相关代码的Playground链接
包含相关代码的GitHub链接
💻 代码
type CreateNodeResultCoreOp1<T extends CreateNodeOp1Function, O extends Options = Options, C extends unknown[] = [], Depth extends number = MaxDepth> = Omit<FragmentVNode, "source" | "children"> & {
source: T;
children: CreateNodeChildrenWithSourceType<T[], ChildrenResult<ReturnType<T>>[]>;
};
🙁 实际行为
当我更改包含上述类型的模块中的代码时,我会遇到构建错误:
[~/src/virtualstate/x]$ yarn build
yarn run v1.22.10
$ tsc -b ./tsconfig.repo.json && yarn build:post
packages/fringe/src/source.ts:41:3 - error TS2502: 'children' is referenced directly or indirectly in its own type annotation.
41 children: CreateNodeChildrenWithSourceType<T[], ChildrenResult<ReturnType<T>>[]>;
~~~~~~~~
Found 1 error.
当我清除模块(删除tsconfig.tsbuildinfo)时,错误会得到解决。CreateNodeChildrenWithSourceType
和ChildrenResult
没有直接引用导致回溯到CreateNodeResultCoreOp1
的类型,这排除了直接引用的可能性,但我认为tsconfig.tsbuildinfo
以某种方式创建了间接引用。
我将这些类型提取出来,它们可以在上面提到的TypeScriptPlayground中正常工作。
我现在直接运行包含此模块的tsc -b ./tsconfig.repo.json
,这里会出现问题。
🙂 预期行为
没有构建错误(当我只更改此模块之外的代码时会发生这种情况)。
[~/src/virtualstate/x]$ yarn build
yarn run v1.22.10
$ tsc -b ./tsconfig.repo.json && yarn build:post
$ node correct-import-extensions.js
✨ Done in 3.00s.
在我解决这个问题的过程中,大部分时间开发都很顺利。过去我也遇到过这个错误,让我放弃了这些类型,不知道是tsconfig.tsbuildinfo
导致的问题,而不仅仅是复杂的类型有问题。
在这里提供任何信息都会很有帮助,但我完全预计这不会有一个简单的解决方案,而只是在我遇到这个错误时删除tsconfig.tsbuildinfo
。
之前我还在discord上寻求帮助,但没有成功。
5条答案
按热度按时间hts6caw31#
这是否在TypeScript@next中仍然可以复现?
abithluo2#
我之前用
typescript@^4.5.1-rc
运行这个程序时也遇到了这个问题。w3nuxt5m3#
我尝试使用
typescript@next
,也称为typescript@4.6.0-dev.20211105
清理工作区(删除所有
tsconfig.tsbuildinfo
)解决了错误。unftdfkk4#
确认仍然存在于
4.6.0-dev.20211208
中guz6ccqo5#
I can also confirm this is present in
4.7.4
. Our current "fix" is also to delete thetsconfig.tsbuildinfo
file.Github link to relevant code