如何解决:类型“ Math”上不存在属性“ seedrandom”

时间:2019-10-01 22:17:43

标签: angular visual-studio-code

我试图将seedrandom添加到有角项目中。我已经使用npm安装了它和打字稿定义。我的json包具有相关的条目(如下所示),因此我确信它已安装成功,并且相关的文件夹位于节点模块中。

"dependencies": {
  "@types/seedrandom": "^2.4.28",
  "seedrandom": "^3.0.5"
}

尽管如此,我仍然不断收到错误:"Property 'seedrandom' does not exist on type 'Math'."实际上,当我执行ng serve时,错误会在控制台中引发,但是Web应用程序可以正常工作。当我做ng build时出现错误,构建失败。

我尝试为每个this定义一个接口,但无济于事。而且我也盯着代码两天了,这也没有帮助。

  getRandomNumber(n) {

    const randomNumber = new Math.seedrandom( '1234' );
    return Math.round( Math.round( randomNumber() * n) );

 }

更新: 根据Myk的回答,我尝试了以下操作:

import { seedrandom } from 'seedrandom';

getRandomNumber(n) {
  const randomNumber = seedrandom( '1234' );
  return Mathround( Math.round( randomNumber() * n) );
}

仅收到错误:Module '"../blah/node_modules/@types/seedrandom"' has no exported member 'seedrandom'.

这很有趣,因为当我检查@ types / seedrandom / index.d.ts文件时,包含以下几行:

export = seedrandom;
export as namespace seedrandom;

我如何在Angular中获得Seedrandom?

3 个答案:

答案 0 :(得分:1)

根据the documentation

  

从版本3开始,通过require('seedrandom')使用时,   全局Math.seedrandom不再可用。

因此,如果您希望在通过npm安装的Angular应用程序中使用它,则应直接导入该函数并使用返回的随机数生成器:

const seedrandom = require('seedrandom');
const rng = seedrandom('<seed>');

答案 1 :(得分:0)

仅是后代,我无法解决此问题,最终使用了其中一项建议here,因为我不需要任何超高质量的东西

答案 2 :(得分:0)

import * as seedrandom from "seedrandom";后跟console.log(seedrandom('hello.')());似乎对我有用。

esModuleInterop似乎与此有关。我只是复制粘贴了在那里建议的第一个导入文件,并且不再打扰阅读,所以我不知道任何细节。

感谢您的初步“盯着代码两天”,我不必自己做,而是能够在10分钟内找到适合我的解决方案。感谢您的辛勤工作:-)