Tslint: 当 Object.assign 的第一个参数是类实例时,不应首选对象传播

创建于 2017-05-25  ·  3评论  ·  资料来源: palantir/tslint

错误报告

  • __TSLint 版本__:5.3

正在整理 TypeScript 代码

value = Object.assign(new Model(), value)

启用prefer-object-spread

实际行为

lint 失败,自动修复以使用对象传播

预期行为

没有。 此规则应忽略Object.assign的第一个参数是类实例的情况。

  • 如果提供了--project ,我们可以检查第一个参数的类型是否是类类
  • 如果没有提供项目并且我们只进行语法检查,我们能做的最好的事情就是检查new ...并忽略表达式

https://github.com/palantir/tslint/issues/2618#issuecomment -303879255 中所述

Fixed Bug

最有用的评论

如果第一个参数不是对象字面量,则规则仅在将结果分配给某物时才会产生错误。
分配 Object.assign 的返回值仅在第一个参数是 CallExpression、NewExpression 或类似参数时才有意义。 其他所有内容,例如 Identifier 或 PropertyAccessExpression 仍应为错误。
这不需要类型检查器。

所有3条评论

Object.assign对其第一个参数有副作用。 (这就是 TypeScript 将{ ...x, ...y }Object.assign({}, x, y) 。)该规则仅应在第一个参数是新的对象文字时激活。

只有当第一个参数是新的对象文字时,规则才应激活。

好吧,从技术上讲,你是对的。 但是我经常看到程序员不小心第一个参数的副作用的错误,他们提供了一个非文字值,实际上他们_实际上_打算做与对象传播相同的事情。 所以我仍然希望这条规则能抓住这一点。 也许它可以选择加入......

如果第一个参数不是对象字面量,则规则仅在将结果分配给某物时才会产生错误。
分配 Object.assign 的返回值仅在第一个参数是 CallExpression、NewExpression 或类似参数时才有意义。 其他所有内容,例如 Identifier 或 PropertyAccessExpression 仍应为错误。
这不需要类型检查器。

此页面是否有帮助?
0 / 5 - 0 等级