TypeScript 代码提示在字面元组的联合上没有适当缩小,

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

Bug报告

🔎 搜索词

  • code hint tuple
  • code hint union

🕗 版本与回归信息

4.4.4

  • 这是我尝试的每个版本的行为,我查阅了关于_________的常见问题解答条目。

⏯ Playground链接

带有相关代码的Playground链接

💻 代码

let value: ['a', 'v1'] | ['b', 'v2'] = ['a', 'v']; // Type 'v' here and get code hint

🙁 实际行为

第一个元素是 'a' ,因此值的类型应该缩小为 ['a', 'v1']
这样,第二个元素的代码提示应该只有 'v1' ,但实际上得到了 'v1' | 'v2'
编译结果是正确的,但与代码提示不一致。

🙂 预期行为

kuarbcqp

kuarbcqp1#

我们可能需要在基于判别式的字面量对象中请求更智能的完成,但在元组中不需要。看起来我们可以并且应该在这里做同样的事情。

izkcnapc

izkcnapc2#

@DanielRosenwasser,我可以接这个吗?

8zzbczxx

8zzbczxx3#

我不会建议解决这个问题,除非你已经解决了其他较小的问题(标记为 good first issue )。

slhcrj9b

slhcrj9b4#

不确定在这里是否欢迎激励性的例子,但这将是一个非常好的功能,可以在第二个.get()示例上实现自动补全。第一个已经可以通过模板字面量类型实现。

var object = { 'a': [{ 'b': { 'c': 3 } }] };
 
_.get(object, 'a[0].b.c');
// => 3
 
_.get(object, ['a', '0', 'b', 'c']);
// => 3

https://lodash.com/docs/4.17.15#get

thigvfpy

thigvfpy5#

我在这里表示,我很希望看到this PR或者类似的更新能够登陆。
感谢你们一直以来的辛勤工作。

相关问题