在 JavaScript 中重复使用 class 个名字
Reusing class names in JavaScript
是否有可能以某种方式重用在找到的全局对象列表 here 中定义的 class 名称? (如数字、字符串)
假设我想拥有自己的字符串 class。我可以定义它,并像这样使用它:
String.js
export default class String {
}
App.js
import String from './String'
let string = new String();
这确实有效,但是
- PHPStorm 告诉我:是的,你使用了原始对象包装器(认为它是
全局对象字符串)。
- 然后 ESLint 告诉我:Disallow Primitive Wrapper Instances (no-new-wrappers)
- 最后 SonarQube 告诉我:对原始类型使用包装对象是无意义的、令人困惑的和危险的。应该改用简单文字。
所以是的,有没有办法封装我的 class,这样它就不会与全局字符串 class 混淆?
import './String'
函数和 class 定义是模块本地的。您正在导入文件,但没有使用其中的任何内容。
这就是为什么:
let string = new String();
将使用全局字符串——模块范围内没有 String
定义。
确保为所需的导入命名:
import String from './String'
顺便说一下,这是为什么最好为您的字符串 class 指定一个唯一名称的多个原因之一,例如 PhysicsString
或 StringMaterial
或 Thread
。这样,如果您忘记将其导入某处,就不会意外地使用全局定义。
是否有可能以某种方式重用在找到的全局对象列表 here 中定义的 class 名称? (如数字、字符串)
假设我想拥有自己的字符串 class。我可以定义它,并像这样使用它:
String.js
export default class String {
}
App.js
import String from './String'
let string = new String();
这确实有效,但是
- PHPStorm 告诉我:是的,你使用了原始对象包装器(认为它是 全局对象字符串)。
- 然后 ESLint 告诉我:Disallow Primitive Wrapper Instances (no-new-wrappers)
- 最后 SonarQube 告诉我:对原始类型使用包装对象是无意义的、令人困惑的和危险的。应该改用简单文字。
所以是的,有没有办法封装我的 class,这样它就不会与全局字符串 class 混淆?
import './String'
函数和 class 定义是模块本地的。您正在导入文件,但没有使用其中的任何内容。
这就是为什么:
let string = new String();
将使用全局字符串——模块范围内没有 String
定义。
确保为所需的导入命名:
import String from './String'
顺便说一下,这是为什么最好为您的字符串 class 指定一个唯一名称的多个原因之一,例如 PhysicsString
或 StringMaterial
或 Thread
。这样,如果您忘记将其导入某处,就不会意外地使用全局定义。