小编Sum*_*omo的帖子

如何解决'属性'宽度'在类型'HTMLElement'上不存在.' 当使用// @ ts-check在vscode中键入检查Javascript(NOT Typescript)时?

在view.js文件中:

const canvas = document.getElementById('canvas');
...
export {
  canvas,
}; 
Run Code Online (Sandbox Code Playgroud)

在main.js文件中:

 import * as view from '../src/view.js';
 ...
 xPosition: view.canvas.width / 2,
Run Code Online (Sandbox Code Playgroud)

给了我'Property 'width' does not exist on type 'HTMLElement'.类型检查错误.

我不知道如何继续,我对打字稿没有任何了解,而且程序是用javascript编写的.我读过的所有解决方案都需要使用打字稿,这在本例中没用.

我有什么办法可以摆脱这个错误吗?

编辑如果我添加以下内容:

/** @type {HTMLCanvasElement} */
const canvas = document.getElementById('canvas');
Run Code Online (Sandbox Code Playgroud)

在我的view.js文件中,它修复了我的main.js中的所有错误...但是,当我添加// @ts-check包含上述行的view.js文件时,我得到:

Type 'HTMLElement' is not assignable to type 'HTMLCanvasElement'.
  Property 'height' is missing in type 'HTMLElement'.
Run Code Online (Sandbox Code Playgroud)

编辑2

我似乎通过使用以下行添加一些括号来解决这个问题:

const canvas = /** @type {HTMLCanvasElement} */ (document.getElementById('canvas'));
Run Code Online (Sandbox Code Playgroud)

javascript typescript visual-studio-code

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

在展平包含的对象数组的同时将对象条目转换为数组的更短方法?(改进我的解决方案)

我有一个像这样的对象:

export default {
  characters: {
    hero: { h: 1 },

    boundaries: { b: 1 },

    zombies: [{ z: 1 }, { z: 2 }, { z: 3 }],
    bullets: [{ b: 1 }, { b: 2 }, { b: 3 }],
  },
};
Run Code Online (Sandbox Code Playgroud)

我需要从它创建一个看起来像这样的数组,但顺序并不重要:

[ { h: 1 }, { b: 1 }, { z: 1 }, { z: 2 }, { z: 3 }, { b: 1 }, { b: 2 }, { b: 3 } ]
Run Code Online (Sandbox Code Playgroud)

我目前的解决方案是有效的,但似乎 …

javascript ecmascript-6

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

如何将 Array.prototype.filter 与多个逻辑 OR || 一起使用 表达式?

我想使用Object.fromEntriesand根据键或值过滤对象Object.entries,但是当我尝试使用逻辑 OR || 时 我不能做我想做的事。有没有一种好的解决方案,无需引入其他方法或循环?

const object1 = { a: 1, b: 2, c: 3 };

const object4 = Object
                 .fromEntries(Object
                                .entries(object1)
                                .filter(([key, val])=>key!=="a"||val!== 2));
                                                  // logic goes wrong!


console.log(object4);
// { a: 1, b: 2, c: 3 } I want { c: 3 }, filter any key with "a" or value with 2
Run Code Online (Sandbox Code Playgroud)

我想要一个正确的布尔 OR,如果它的任何参数为 true,则返回 true,否则返回 false。我读过 JS 做了一些奇怪的事情,但是如何排序呢?

javascript

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