TypeScript版本: 2.2.1 / nightly (2.2.0-dev.201xxxxx)
代码
以下是JavaScript代码:
/**
* @param {MessageActivity} activity
* @param {IConversationContext} context
*/
export function Prompt_beforeResponse(activity, context)
{
// MessageActivity is defined in typescript definition provided to the editor as having 4 properties (attachements, text, speak, type).
// Typing activity. will show those for properties but also:
// activity - why should activity be under itself?
// context - why should the second parameter be under activity?
// IConversationContext - why would a type, that is not a property in any object be under activity?
// MessageActivity - same question as above
// onRun - why should a global function be under activity
// Prompt_when - same as above
// Prompt_beforeResponse - same question as above and this is the function itself
// Here is another example. obj. should display only a and b, but it also shows activity, context, MessageActivity, IConversationContext, etc.
/**
* @type {{a: number, b: string }}
*/
var obj = {};
obj.
}
// A *self-contained* demonstration of the problem follows...
预期行为:
当一个JavaScript类型不是"any"时,即在jsdoc中或在typescript定义助手中定义时(参见https://github.com/Microsoft/TypeScript/wiki/JavaScript-Language-Service-in-Visual-Studio#unsupported-patterns),只有那些已定义的成员应该成为intellisense的一部分。
即使类型是any,像那样在intellisense上抛出所有内容也破坏了找出对象下合理内容的目的。
实际行为:
在intellisense中出现了一堆毫无意义的额外条目,无论是类型化的还是未类型化的场景,但这对于类型化场景特别糟糕,因为在那里已经投入了一些心思来确定应该出现在intellisense中的内容。添加所有这些条目使得intellisense功能变得不那么有用。
5条答案
按热度按时间qyswt5oh1#
注意:此文档:#4793 提到:
由于类型推断(甚至可能不是所有场景中的定义)在某些情况下可能不准确,因此 IDE 还应提供从项目中更广泛的标识符列表中选择的功能,或者手动输入任何补全。
这可能是这个问题的根源。但我认为上面添加的所有条目都没有意义,尤其是针对已输入的情况。
3lxsmp7m2#
老实说,在JS模式下我们无法做出任何保证。你可能已经在一个闭包中捕获了值并对其进行了操作,我不确定额外的检查是否有必要以确保这种情况是有意义的。
此外,虽然你可能觉得它没什么用,但其他人可能会觉得有用。特别是,文件中其他地方使用的标识符可能会被用来定义当前对象上的属性。似乎没有必要删除这些。就我个人而言,当我不需要进行类型检查时,我很欣赏这种灵活性。
如果你在
--checkJs
或// @ts-check
模式下看到这种行为,那么这可能是一个我们应该考虑的问题。yftpprvb3#
通过添加这些条目,有一个保证:它保证减少了javascript的智能感知功能的实用性。
我希望有人能告诉我关于我提到的具体条目的用途。类型?一个内部的另一个参数?标识符本身在标识符内?所有全局符号?
什么是--checkJs ?
carvr3hs4#
--checkJs
是什么?请参阅https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#errors-in-js-files-with---checkjs获取更多信息。
p3rjfoxz5#
根据#15747中的讨论,似乎对于我们知 prop 有明确类型的值,修剪完成列表是有价值的。对于类型为
any
或{ [x:string]: any }
的值,没有计划进行更改。