在 typescript 项目中导入 matter-js

Import matter-js in typescript project

我找到了这个文件:

https://www.npmjs.com/package/@types/matter-js

我执行这一行:

npm install --save @types/matter-js

在根 ts 文件中我收到错误消息:

'Matter' refers to a UMD global, but the current file is a module. Consider adding an import instead.

代码如下:

///<reference path="matter-js.d.ts"/>

import Ioc from "./libs/ioc";
let master = new Ioc();
console.log(master);
console.log(Matter);

浏览器错误:

app.ts:11 Uncaught ReferenceError: Matter is not defined

我需要加载 matter-js.js 库吗?​​

如果我输入:

import matter from 'matter-js'

我得到:

Module ''matter-js'' has no default export.

我用脚本标签加载 matter.js 库。你忘了吗?

<script src="js/matter.min.js"></script>

我用

安装了打字
npm install @types/matter-js

不幸的是,打字稿库似乎已过时。最后一次提交是 2 年前。在打字稿定义中应该是可选的参数反而是必需的...

您可以尝试使用 import * as matter from 'matter-js' 加载它,应该可以。

你也可以

var Matter = require('matter-js');

import { Engine, World, Body, Bodies, Constraint } from 'matter-js';

@types/matter-js 缺少 Common class,但也许您无论如何都不应该使用它。如果确实需要,可以把这个加到包里的index.d.ts,

export class Common {
    static extend(obj:any, deep?:boolean): any;
    static clone(obj:any, deep?:boolean): any;
    static keys(obj:any): any;
    static values(obj:any): any;
    static get(obj:any, path:string, begin:number, end:number): any;
    static set(obj:any, path:string, val:any, begin:number, end:number): any;
    static shuffle(array:any[]): any;
    static choose(choices:any[]): any;
    static isElement(obj:any):boolean;
    static isArray(obj:any):boolean;
    static isFunction(obj:any):boolean;
    static isPlainObject(obj:any):boolean;
    static isString(obj:any):boolean;
    static clamp(value:number, min:number, max:number):number;
    static sign(value:number): number;   
    static now(): number;
    static random(min?:number, max?:number): number;
    static colorToNumber(colorString:string): number;
    static log(...objs:any[]): void;
    static info(...objs:any[]): void;
    static warn(...objs:any[]): void;
}

在我再次删除 node_modules 和 运行 npm install 之前,我的 matterjs 导入出现错误。然后问题就消失了。结果如下:

import * as Matter from 'matter-js';