Как работает instanceof при изменениях класса / NPM версий в JavaScript? - PullRequest
1 голос
/ 04 апреля 2020

Скажите, у меня есть следующий код.

const myNPMPackage = require("myNPMPackage");
const checkIfUserPackage = require("checkIfUserPackage");

const userObj = {"name": {"first": "Joe", "last": "Smith"}};
const user = new myNPMPackage.User(userObj);
checkIfUserPackage.checkIfUser(user); // true
checkIfUserPackage.checkIfUser(userObj); // false

// Then in the `checkIfUserPackage` package it has the following code, and also has `myNPMPackage` as a dependency of `checkIfUserPackage`
const myNPMPackage = require("myNPMPackage");
module.exports.checkIfUser = (user) => user instanceof myNPMPackage.User;

Этот код работает отлично и как ожидалось.

Мой вопрос: что произойдет, если myNPMPackage сделает обновление для этого User class, и версия myNPMPackage, которую я использую в своем коде, отличается от версии myNPMPackage, которую использует checkIfUserPackage?

Очевидно, что в этом случае возможно, что myNPMPackage.User класс будет отличаться в моем проекте от checkIfUserPackage. Но я все еще хочу, чтобы метод checkIfUser возвращал значение true.

Как работает instanceof между NPM версиями пакета?

Если это вызовет проблемы между версиями, Есть ли обходные пути, чтобы гарантировать, что даже в разных версиях instanceof вернет ожидаемый результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...