You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After enabling verbatimModuleSyntax, it seems no longer possible to export both Foo and Bar from index.ts. Some attempts:
typeFoo=string|number;constBar=42;export={ Foo, Bar };// error; Foo is a type but used as a value
This is ok,
exporttypeFoo=string|number;constBar=42;
but this is not
exporttypeFoo=string|number;constBar=42;export={ Bar };// An export assignment cannot be used in a module with other exported elements. (TS2309)
nor this
typeFoo=string|number;constBar=42;exporttype{Foo};export={ Bar };// An export assignment cannot be used in a module with other exported elements. (TS2309)
Can't find a way to export both types and values using CJS import/export syntax required by verbatimModuleSyntax
🙂 Expected behavior
There is a way to export both types and values using CJS import/export syntax
Additional information about the issue
Perhaps this is possible, and if so I'd ask it be added to the documentation. Without this, a currently-functioning CJS module cannot straightforwardly be converted to use verbatimModuleSyntax.
FWIW, if it's not possible, I don't see why at least one of the following wouldn't be allowed (specifically due to the use of export type to ensure only one value export exists)
exporttypeFoo=string|number;constBar=42;export={ Bar };// not a problem; only one value export
or
typeFoo=string|number;constBar=42;exporttype{Foo};export={ Bar };
The text was updated successfully, but these errors were encountered:
🔎 Search Terms
verbatimModuleSyntax, commonjs, require, export, export type,
🕗 Version & Regression Information
⏯ Playground Link
https://www.typescriptlang.org/play/?moduleResolution=99&target=99&module=199&verbatimModuleSyntax=true&ts=5.8.0-dev.20241225#code/KYDwDg9gTgLgBDAnmYcBiEJwLxwM4xQCWAdgOZwA+cJArgLYBGwUA3AFDsDGANgIZ48cAEJ8ocAN4BfTqEiwcIsayA
💻 Code
I wanted to convert a *.ts file that gets interpreted as CJS (due to package.json "type" field) to use
verbatimModuleSyntax
for explicitness.The file previously looked like this
and could be imported like so
After enabling
verbatimModuleSyntax
, it seems no longer possible to export bothFoo
andBar
from index.ts. Some attempts:This is ok,
but this is not
nor this
tsconfig:
package.json: has
"type": "commonjs"
🙁 Actual behavior
Can't find a way to export both types and values using CJS import/export syntax required by verbatimModuleSyntax
🙂 Expected behavior
There is a way to export both types and values using CJS import/export syntax
Additional information about the issue
Perhaps this is possible, and if so I'd ask it be added to the documentation. Without this, a currently-functioning CJS module cannot straightforwardly be converted to use verbatimModuleSyntax.
FWIW, if it's not possible, I don't see why at least one of the following wouldn't be allowed (specifically due to the use of
export type
to ensure only one value export exists)or
The text was updated successfully, but these errors were encountered: