TypeScript 为?和!在类型空间中提供更好的错误信息,

5fjcxozz  于 5个月前  发布在  TypeScript
关注(0)|答案(3)|浏览(120)

🔎 搜索词

可选链类型错误

🕗 版本与回归信息

当前版本

⏯ Playground链接

  • 无响应*

💻 代码

type Q1 = A?.B
type Q2 = A!.B
type Q3 = typeof A?.B
type Q4 = typeof A!.B

🙁 实际行为

错误的错误。

🙂 预期行为

Optional chains are not allowed in entity names.Non-null assertions are not allowed in entity names.

关于问题的附加信息

type Q = A?.Btype Q = A!.B 这样的生产环境今天会产生一个相当糟糕的 , expected 类型错误。这可能是一个常见的错误 - 我们应该改进它。

lztngnrs

lztngnrs1#

这个错误应该至少更好,因为?.语法在流中的类型上是支持的。请注意,这不应该排除实际上支持?.作为类型中的一个很好的简写,就像它在表达式中一样。这基本上由#45793跟踪,我们也确实应该考虑一下。

pprl5pva

pprl5pva2#

在类型空间中的可选链(optional chain)到底意味着什么?我的最佳猜测是,A?.B 的计算结果将等于 A["B"] | undefined (忽略 nullundefined 如果它们是 A 类型的部分)。

k3bvogb1

k3bvogb13#

是的,类似于NonNullable<A>["B"] | undefined(尽管关于A是否包含null的信息丢失是有问题的,但在JS中它总是有点像这样)。

相关问题