小编Tra*_*r69的帖子

接口中的 Typescript 静态方法

我正在寻找一种方法,要求一个类拥有一些静态方法,而不必自己实现它们(就像接口可以定义普通方法一样)。由于接口不支持静态方法,因此以下代码不起作用。

interface MyInterface {
  static fromJSON(json: string): MyInterface
  toJSON(): object
}
Run Code Online (Sandbox Code Playgroud)

抽象类不是我想要的东西,因为它们不需要开发人员自己编写方法,但我必须实现它。
有没有类似的东西,而无需编写大量自定义逻辑?

使用上面的接口,不应接受以下实现:

class MyClass implements MyInterface {
  // Missing static method "fromJSON"
  toJSON() {
    return {}
  }
}
Run Code Online (Sandbox Code Playgroud)

这个也不应该:

class MyClass implements MyInterface {
  static fromJSON(json: string) {
    return 123 // Wrong type
  }

  toJSON() {
    return {}
  }
}
Run Code Online (Sandbox Code Playgroud)

但这一点应该被接受:

class MyClass implements MyInterface {
  static fromJSON(json: string) {
    return new MyClass()
  }

  toJSON() {
    return {}
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript

15
推荐指数
1
解决办法
1万
查看次数

规则中无法识别 GitLab CI 自定义变量

在使用预定义 CI 变量的块中定义变量时variables,无法在块中引用该变量rules。这里,只有 job_1被执行:

variables:
  PRODUCTION_BRANCH: $CI_DEFAULT_BRANCH

stages:
  - stage_1

job_1:
  stage: stage_1
  script:
    - export
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'

job_2:
  stage: stage_1
  script:
    - export
  rules:
    - if: '$CI_COMMIT_BRANCH == $PRODUCTION_BRANCH'
Run Code Online (Sandbox Code Playgroud)

但是当对其值进行硬编码时,PRODUCTION_BRANCH它会按预期工作。在这里,两个作业都被执行:

variables:
  PRODUCTION_BRANCH: "master"

stages:
  - stage_1

job_1:
  stage: stage_1
  script:
    - export
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'

job_2:
  stage: stage_1
  script:
    - export
  rules:
    - if: '$CI_COMMIT_BRANCH == $PRODUCTION_BRANCH'
Run Code Online (Sandbox Code Playgroud)

当查看作业的输出时(因为export记录了环境变量),在这两种情况下都有具有PRODUCTION_BRANCH正确值的变量 …

continuous-integration gitlab gitlab-ci gitlab-ci-runner

6
推荐指数
2
解决办法
5652
查看次数

触摸移动真的很慢

我正在构建一个类似绘画的功能,用户可以在其中画一条线,但是 touchmove 事件在我的设备(android 手机)上发出得非常慢,因此这条线变得尖锐。当我将设备连接到 PC 并通过 USB 调试打开 chrome devtools 时,一切正常。在桌面-chrome 中的手机模拟器上没有任何问题。

这是一个屏幕截图。内圈是用慢速触摸事件绘制的,对于外圈,我将设备连接到我的电脑。

截屏

这是另一个屏幕截图,显示各个“touchmove”事件调用之间的持续时间。顶部部分(绿色值)发生在开发工具打开时,底部部分(红色值)发生在开发工具关闭时。

截屏

代码:

function DrawingCanvas(/* ... */) {
    // ...

    const handleTouchMove = (event) => {
        handleMouseMove(event.touches[0])
    }

    const handleMouseMove = ({ clientX, clientY }) => {
        if (!isDrawing) {
            return
        }

        const canvasRect = canvas.getBoundingClientRect()
        const x = clientX - canvasRect.x
        const y = clientY - canvasRect.y

        currentPath.current.addPoint([x, y])
        update()
    }

    const update = () => {
        clearCanvas()
        drawPath()
    }

    // ...

    useEffect(() => {
        const drawingCanvas …
Run Code Online (Sandbox Code Playgroud)

javascript android reactjs

4
推荐指数
1
解决办法
2314
查看次数

运行生产版本时 React 应用程序崩溃

我可以在本地开发服务器上完美地运行我的react-app(使用create-react-app样板),但是当我使用它进行编译npm run build然后使用服务器运行它时(我尝试了netlify和本地http服务器),我只收到此错误并且页面未加载:

classCallCheck.js:1 Uncaught RangeError: Maximum call stack size exceeded
    at Object.a (classCallCheck.js:1)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
    at e (Object.js:6)
Run Code Online (Sandbox Code Playgroud)

文件 Object.js 位于 src/Model/Objects/Object.js 下。

GitHub: https: //github.com/Tracer1337/DynaSys
部署在 Netlify 上:https://youthful-mestorf-9e0ba8.netlify.com/

我做错了什么?

javascript node.js reactjs webpack netlify

1
推荐指数
1
解决办法
3632
查看次数