TypeScript isNewIdentifierLocation 函数调用内始终设置为 true,

j13ufse2  于 4个月前  发布在  TypeScript
关注(0)|答案(3)|浏览(40)

TypeScript版本: 3.0.0-dev.20180713
搜索词:

  • isNewIdentifierLocation
  • completions
  • suggest
    问题

当在函数调用中,如:

console.log(c|)

时,completionInfo请求似乎总是返回isNewIdentifierLocation

预期行为:

我认为isNewIdentifierLocation应该只在用户开始编写带有括号参数列表的箭头函数时返回,例如:

(c|)

或者

console.log((c|)
llycmphe

llycmphe1#

问题在于,c => c + 1也是一个语法上有效的箭头函数。因此,当用户输入c时,我们不希望自动将其纠正为以c开头的内容。
一个可能的选项是返回三个结果:绝对不是新的标识符,可能是新的标识符,以及可能不是新的标识符。这样,编辑器可以避免进行大量的纠正操作,但仍然可以纠正明显的拼写错误。

v8wbuo2f

v8wbuo2f2#

我们在这里感兴趣的一个案例是是否要在,上启用接受完成。我认为当用户要输入c => c + 1时,,应该为c|提交,但在(c) => c + 1中不是为(c|)提交。
我认为我们可以通过你提议的额外信息来实现这一点。

kzmpq1sx

kzmpq1sx3#

这个bug仍然存在于TypeScript 3.2.2中。这相当令人恼火,因为在所有IDE中,自动补全匹配都不会在你期望它出现的情况下插入。
我认为isNewIdentifierLocation的值应该取决于当前位置是否有效箭头函数。例如:

function demo(a:number, b:(x:number) => void)
{
}

demo(a|     // an arrow function isn't valid here, isNewIdentifierLocation should be false
demo(a, b|  // an arrow function is valid here, isNewIdentifierLocation should be true

相关问题