instanceof 在打字稿库项目中无法正常工作

Ken*_*ood 3 shared-libraries typescript nestjs

我构建了一个打字稿库项目。并使用公共包中的一些类。
假设有一个简单的函数来测试它是否是 BadRequestException

import { BadRequestException } from "@nestjs/common";
export function test(error) {
  let a = error;
  let b = BadRequestException;
  console.log(a instanceof b);
}
Run Code Online (Sandbox Code Playgroud)

从另一个正常项目构建并导入这个shared-lib库之后,我像这样调用

import { BadRequestException } from "@nestjs/common";
import { test } from 'shared-lib';
test(new BadRequestException('it is a test error'));
Run Code Online (Sandbox Code Playgroud)

在我的整个过程中(应该是),a instance b在测试函数中应该等于true,但是,我得到了false

在此输入图像描述

库项目中使用的与第二个项目中使用的是否BadRequestException不同,即使它们都是从 导入的"@nestjs/common"

在Github上传了一个演示项目

dai*_*ign 5

instanceof 检查构造函数是否相同。问题是您的代码从库中的代码获取了自己的构造函数副本(因为事情就是这样,这不是您的错),因此它们不再是同一个实例。

不过,构造函数仍然共享相同的名称:

error.constructor.name === BadRequestException.prototype.constructor.name
Run Code Online (Sandbox Code Playgroud)

请参阅此处相关问题