TypeScript 检测JS原型上的奇特赋值模式

2wnc66cl  于 6个月前  发布在  TypeScript
关注(0)|答案(6)|浏览(53)

模板由@mjbvz添加
TS版本:3.7-20190911
仓库

对于JS:

function A() {}

A.prototype.foo = 1;

[A.prototype.bar] = [2],
{baz: A.prototype.baz} = {baz: 3};

const proto = A.prototype;
proto.prop = 4;

预期

A 示例的智能感知应显示四个属性

实际

只显示了 foo

原始报告如下

智能感知似乎只识别简单的原型属性定义,如 Class.prototype.prop = value
Class.prototype 分配给一个变量并扩展它,或者使用解构语法将不会被识别:

o0lyfsai

o0lyfsai1#

请分享代码文本以及截图。

zbq4xfa0

zbq4xfa02#

感谢您创建此问题!我们发现它缺少一些基本信息,或者以其他方式不符合我们的issue reporting指南。请花时间审查这些内容并更新问题。
快乐编码!

9bfwbjaz

9bfwbjaz3#

这是代码:

function A() {}

A.prototype.foo = 1;

[A.prototype.bar] = [2],
{baz: A.prototype.baz} = {baz: 3};

const proto = A.prototype;
proto.prop = 4;

这将创建一个具有4个属性的原型,但Intellisense只建议一个,foo

q0qdq0h2

q0qdq0h24#

有人会这样写代码吗?

krcsximq

krcsximq5#

在我的编程经验中,将原型分配给变量并不是一种不常见的代码模式(重复VeryLongClassName.prorotype对于每次分配可能会显得庞大),并且解构语法可以用于从另一个文件导入并扩展原型。

ifsvaxew

ifsvaxew6#

我认为我们永远无法检测到像const proto = A.prototype;这样的间接形式。其他人...嗯,我们可以做到,但这似乎并不常见。

相关问题