如何使用deep-equal(Angular 7)

7

使用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 推荐另一个比较对象的库。

2个回答

10
将该脚本添加到您的 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';

编辑 只是一个语法问题。我建议你打开存储库并查看语法。正确的语法是

import deepEqual from 'deep-equal';

正如您可以在此Stackblitz中看到的那样,这段代码涉及到IT技术。


1
我已经安装了@types/deep-equal,但仍然出现错误。 - Nastya Scherbakova
类似于此 https://stackblitz.com/edit/angular-qjrh3q?file=src%2Fapp%2Fapp.component.ts - Nastya Scherbakova
@NastyaScherbakova编辑了我的答案,随时检查! - user4676340
只有当我在库文件中更改“export default”时,它才能正常工作,但这不是一个解决方案 :( - Nastya Scherbakova
1
然后尝试使用 import * as deepEqual from 'deep-equal'; 并将其与 deepEqual.deepEqual 一起使用。 - user4676340
显示剩余6条评论

2
您可以使用fast-deep-equal包。它是Angular的同级依赖项,但不要忘记将其添加到常规依赖项中。 此外,它是最快的对象比较器。
用法
import equal from 'fast-deep-equal';

equal(a,b); // returns true\false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接