microsoft / microsoft/TypeScript
Filename with two dollar signs ($$) behaves differently when using paths config
Open
@andrewbranch is already working on this.
Since Apr 9, 2025.
Needs Investigation
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
🔎 Search Terms
"dollar signs", "two dollar signs", "$$", "paths config"
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about (nothing relevant found in FAQ)
⏯ Playground Link
https://github.com/its-jman/ts-dollar-import-repro
💻 Code
// The files: "code", "$code", and "$$code" all exist. "$$$$code" does not.
// However, the first line is the only one that has an error:
// "'"~server/$$code"' has no exported member named 'test2'. Did you mean 'test1'?"
import {test2 as test2_error} from "~server/$$code"
import {test2 as test2_working} from "~server/$$$$code"
import {test1} from "~server/$code"
import {test0} from "~server/code"
import {test2 as test2_2} from "./server/$$code"
import {test1 as test1_2} from "./server/$code"
import {test0 as test0_2} from "./server/code"
🙁 Actual behavior
It appears that $$ gets escaped / interpreted as reduced to a single $ but ONLY when using paths config.
🙂 Expected behavior
The filename imported matches the filename that you've written.
Additional information about the issue
Suggested cause / solution mentioned in responses on TS Discord here: https://discord.com/channels/508357248330760243/1357697438990995488/1357697438990995488
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.