TypeScript 间歇性循环型误差

6tr1vspr  于 4个月前  发布在  TypeScript
关注(0)|答案(5)|浏览(60)

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)时,错误会得到解决。
CreateNodeChildrenWithSourceTypeChildrenResult没有直接引用导致回溯到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上寻求帮助,但没有成功。

hts6caw3

hts6caw31#

这是否在TypeScript@next中仍然可以复现?

abithluo

abithluo2#

我之前用typescript@^4.5.1-rc运行这个程序时也遇到了这个问题。

w3nuxt5m

w3nuxt5m3#

我尝试使用 typescript@next ,也称为 typescript@4.6.0-dev.20211105

[~/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 8.22s.     
[~/src/virtualstate/x]$ echo "make some change here"
[~/src/virtualstate/x]$ yarn build
yarn run v1.22.10
$ tsc -b ./tsconfig.repo.json && yarn build:post
packages/fringe/src/source.ts:46:3 - error TS2502: 'children' is referenced directly or indirectly in its own type annotation.

46   children: CreateNodeChildrenWithSourceType<T[], ChildrenResult<ReturnType<T>>[]>;
     ~~~~~~~~

Found 1 error.

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

清理工作区(删除所有 tsconfig.tsbuildinfo )解决了错误。

unftdfkk

unftdfkk4#

确认仍然存在于4.6.0-dev.20211208

guz6ccqo

guz6ccqo5#

I can also confirm this is present in 4.7.4 . Our current "fix" is also to delete the tsconfig.tsbuildinfo file.
Github link to relevant code

相关问题