是否可以以某种方式重用全局对象列表中定义的类名here ? (如数字、字符串)
假设我想要拥有自己的 String 类。我可以定义它,并像这样使用它:
字符串.js
export default class String {
}
App.js
import String from './String'
let string = new String();
这确实有效,但是
- PHPStorm 告诉我:是的,你使用了一个原始对象包装器(认为它是 全局对象字符串)。
- 然后 ESLint 告诉我:禁止原始包装器实例(无新包装器)
- 最后,SonarQube 告诉我:对原始类型使用包装对象是无端的、令人困惑的和危险的。应使用简单的文字来代替。
那么有没有办法封装我的类,这样它就不会与全局 String 类混淆?
最佳答案
import './String'
函数和类定义是模块的本地定义。您正在导入该文件,但不使用其中的任何内容。
这就是为什么:
let string = new String();
将使用全局字符串——模块范围内没有String
定义。
确保为所需的导入命名:
import String from './String'
顺便说一句,这是为什么最好为 String 类指定一个唯一名称的多个原因之一,例如 PhysicsString
或 StringMaterial
或 Thread
.这样,如果您忘记将其导入到某个地方,您就不会意外地使用全局定义。
关于javascript - 在 JavaScript 中重用类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46511195/