Can’t resolve @types when vendoring dependencies for browser ESM imports · Issue #50600 · microsoft/TypeScript (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Appearance settings

@pehrlich2

Description

@pehrlich2

Bug Report

🔎 Search Terms

🕗 Version & Regression Information

N/A (behavior is documented)

💻 Code

Related frustrations have been posted many times before - so I've hesitated to post this:

#16577
#13422
#28288
#42151

My case, and workaround, are documented here: https://stackoverflow.com/questions/67725840/how-can-i-use-threejs-es6-native-modules-with-typescript/73575993#73575993

🙁 Actual behavior

  1. The Declaration File must be included with an alias, e.g. import * as THREE from 'three'
  2. es6 modules require extensions, which the alias does not allow. TypeScript does and will not support URL rewriting.
  3. As a result, I cannot use Declaration Files + TypeScript without importing additional software

🙂 Expected behavior

There could be multiple possible solutions here:

  1. Just document it better, here: https://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html If this was described as a known limitation, it would have saved me half a day.
  2. Support aliases with extensions in one of two ways:
    a) Allow the alias itself to be of the final expected form ./js/lib/three.module.js
    b) Allow some sort of a custom mapping, which I can use to tell tsc to look for an .d.ts alias three when it sees ./js/lib/three.module.js

Thanks in advance!