【问题标题】:How to use deep-equal (Angular 7)如何使用深度相等(Angular 7)
【发布时间】:2019-05-07 00:19:28
【问题描述】:

VS Code 自动导入:

import deepEqual = require('deep-equal');

不起作用:

错误 TS1202:定位时无法使用导入分配 ECMAScript 模块。考虑使用'import * as ns from "mod"', 'import {a} from "mod"'、'import d from "mod"' 或其他模块 格式。

然后我尝试这样做:

import * as deepEqual from 'deep-equal';

错误 TS2497:模块 '"path/@types/deep-equal/index"' 解析为非模块实体,无法使用此构造导入。

像这样:

import {deepEqual} from 'deep-equal';

错误 TS2305:模块 '"C:/Projects/ManagerServer/Src-LoyaltyCoin.ManagerServer.Core/ManagerWeb/ClientApp/node_modules/@types/deep-equal/index"' 没有导出成员“deepEqual”。

我不知道如何导入它。如果没有解决方案,请向我推荐另一个库来比较 Angular 7 的对象。

【问题讨论】:

    标签: angular typescript npm compare


    【解决方案1】:

    您可以使用fast-deep-equal 包。 Angular 在内部使用它,这意味着您不必保留另一个 npm 包。 另外,它是fastest 对象比较器。

    用法

    import equal from 'fast-deep-equal';
    
    equal(a,b); // returns true\false
    

    【讨论】:

      【解决方案2】:

      将脚本添加到您的 angular.json 文件中:

      scripts: [
        "node_modules/deep_import/name.of.minified.file.js"
      ]
      

      并在你的组件中声明一个变量:

      import { Component } from '@angular/core';
      ....
      declare const deepEqual: any;
      

      或者,您可以找到 typings 并安装它们,然后像​​任何其他依赖项一样导入它:

      import * as deepEqual from 'deep-equal';
      

      EDIT 只是语法问题。我建议你open the repository 看看语法。正确的是

      import deepEqual from 'deep-equal';
      

      正如你在stackbltiz中看到的那样

      【讨论】:

      • 我已经安装了@types/deep-equal,但还是有错误
      • @NastyaScherbakova 编辑了我的答案,请随时查看!
      • 我明白了,但由于某种原因它对我不起作用“错误 TS2304:找不到名称 'deepEqual'。”
      • 然后试试import * as deepEqual from 'deep-equal';deepEqual.deepEqual一起使用
      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 2018-10-23
      • 2021-11-01
      • 1970-01-01
      • 2023-03-12
      • 2021-10-10
      • 2018-10-28
      • 2017-10-27
      相关资源
      最近更新 更多