gpt4 book ai didi

javascript - 带有 "method could be static"警告的方法在 JavaScript/TypeScript 中是否被视为错误形式?

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:39 24 4
gpt4 key购买 nike

我注意到,如果我编写的方法仅作用于调用方法的局部变量(不直接与类变量交互),那么我会收到一条警告,指出该方法可以是静态的。

有时将一大段代码抽象成一个单独的方法会很好。这是否以某种方式考虑了 JavaScript/TypeScript 中的不良做法?

由于我不断收到这些警告,我冒着这样的机会,因为我问了一个可能会引起意见的问题,邮局警察会突然袭击我。让我通过说我收到的警告不是意见来对此进行辩护。它们是明确的警告。这表明存在一个不是意见的答案,至少从决定创建这些警告的人的 Angular 来看是这样。

编辑:我被要求将代码放在这里以提供一个正当理由来说明我为什么要这样做。我个人认为这不会使我提出的问题更加清晰,但这是在 WebStorm 中产生警告的方法示例。

//Change object array in *.content objects to values array
//noinspection JSMethodCanBeStatic
transformData(visibleData) {
const ret: any = {};
ret.headings = visibleData.headings;
ret.checkbox = this.checkBox; //add if the table needs checkboxes
ret.content = [];
for (let i = 0; i < visibleData.content.length; i++) {
ret.content.push(_.values(visibleData.content[i]));
}
return ret;
}

此函数的要点是获取实例的克隆,以免修改实例本身,并创建一个不同的对象,主要是一个仅值数组,将用于在模板中进行数据绑定(bind)。我这样做是为了让我的表格模板可以重复使用,因为列数不同。

最佳答案

不与实例交互的代码应该是一个自由函数,或者至少是一个类的静态方法,当您认为它与类 API 紧密耦合时。

您添加到 API 的每个附加方法都必须得到支持。因此,较大的类(class)比较小的类(class)需要更多的支持。在某些语言中,比如 Java,你不能有自由函数,所以你必须将函数附加到一些类上,但是 TypeScript 和 JS 更灵活,所以不需要污染类 API。

你可以从性能优化的 Angular 考虑。

当 JS 评估类方法时,它会在对象实例中查找它,而不是在对象原型(prototype)中,而不是在父级原型(prototype)中等。每次查找都会占用 CPU 时间,所以当你考虑性能时,自由函数是你的选择。

关于javascript - 带有 "method could be static"警告的方法在 JavaScript/TypeScript 中是否被视为错误形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42473701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com