This function is intended to gracefully address issues with the default exports of packages that may
have been transpiled/bundled improperly or were simply transpiled to run in an environment that has
built-in support for addressing this kind of issue.
This problem can often rear its head when working in mixed CJS / ESM environments.
Before / Ideal:
import wonky from'wonky';
// Use `wonky` as the developer intended.
Sometimes, based on the Node version running this code and how the code was transpiled/bundled, a
package's default export may be on a property key default on the value imported.
Naive TypeScript Fix:
import wonkyExport from'wonky';
const wonky = wonkyExport.default;
// Now, typeof wonky is incorrect; IntelliSense is broken, and// TypeScript will throw errors.
Furthermore, you may run into cases where your code behaves differently in different runtime
environments, especially if you are authoring a library and you don't know how your code will be
transpiled by the end user. Some bundlers have built-in interop features that address this issue, but
running the same code in Node will produce an error.
Even worse, TypeScript can miss this error at compile-time, mistakenly thinking that the default
export of a package is the value we expected it to be rather than an object with a nested default
property.
This function is designed to be used as a runtime dependency that will address both of these
problems. First, it ensures your code runs the same way in both types of environments by returning the
provided value as-is if it doesn't contain a default key. Second, it type-casts the return value as
the type of the parameter provided, so TypeScript will always be happy. 🌈
import wonkyExport from'wonky';
import { interopImportDefault } from'@darkobits/interop-import-default';
const wonky = interopImportDefault(wonkyExport);
// Use `wonky` as the developer intended.
FAQs
TypeScript-friendly utility for extracting default exports from tricky packages.
We found that @darkobits/interop-import-default demonstrated a not healthy version release cadence and project activity because the last version was released a year ago.It has 1 open source maintainer collaborating on the project.
Package last updated on 14 Jun 2023
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Biden's executive order pushes for AI-driven cybersecurity, software supply chain transparency, and stronger protections for federal and open source systems.
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.