javascript - 在 JavaScript 中重用类名

标签 javascript class global

是否可以以某种方式重用全局对象列表中定义的类名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 类指定一个唯一名称的多个原因之一,例如 PhysicsStringStringMaterialThread.这样,如果您忘记将其导入到某个地方,您就不会意外地使用全局定义。

关于javascript - 在 JavaScript 中重用类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46511195/

相关文章:

javascript - ¿如何在异步搜索过程中添加 'load more'按钮?

javascript - HTML 页面上的按钮不起作用

php - 悬停时在 php/mysql 中显示控件

用于类和子类的 Python IsInstance()

Java对象数组初始化

c++ - CUDA C编译错误: new operator is not allowed in global function

javascript - 如何在 nuxt 中使用全局 javascript? ( fb sdk 在 mounted () 中使用)

windows - 选择热键

javascript - 在 `bundle.js` 创建 `cachebust.resources()` 之后如何从 html 引用 `bundle.a3503174.js` ?

c# - 删除类数组的成员 C#