TypeScript
TypeScript copied to clipboard
Design Meeting Notes, 9/17/2024
Extension Rewriting
https://github.com/microsoft/TypeScript/pull/59767
- We've discussed what we need to do with async imports.
- One possibility: you do the transform yourself.
- Another: we provide a runtime shim - possibly overridable.
- Also: we have the same situation for
requirecalls in JS input files.- It is currently not as common, but possible, for us to transform JavaScript input files.
- Those files can still refer to
.tsfiles - do we want rewriting for those?
- Does the experimental mode in Node support
require?- Pretty sure it does?
- There's
requirewith a plain string and an arbitrary expression.- Why do we care about this difference?
-
requirecan be passed into arbitrary places.- Makes us inclined to say no shimming.
- We could error on
requireof an arbitrary expression in this mode.- People can always alias
requireor// @ts-ignore.
- People can always alias
- Extension rewriting was always weird - but if we're gonna do it, maybe we should do it in a maximalist way?
- Feels like if semantics diverges between runtime and emit, that's a problem.
- Could just say only
requireon static imports. - Can you just create arbitrary
requires?- Yes, there's
createRequire- could maybe monkey-patch this? - Also
require.call(...)
- Yes, there's
- Could add an import attribute to turn off rewriting for
import(). - Moved from "don't shim anything" to "shim everything".
- Between import attributes and
(require)(...)these are reasonable opt-outs. - Also open to just a global flag...
- Or a third state for the flag.
-
"none","staticImportsOnly","bestEffort"?
-