microsoft / microsoft/TypeScript
[isolatedDeclarations] Type of const variable declared with template literal expression containing only literals still requires explicit annotation
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 117
Description
🔎 Search Terms
isolated declarations template literal expression
🕗 Version & Regression Information
- This is the behavior in every version I tried
⏯ Playground Link
💻 Code
export let foo = `${''}`;
export const bar = `${''}`;
export function baz() {
return `${''}`;
}
🙁 Actual behavior
bar has a type error:
Variable must have an explicit type annotation with --isolatedDeclarations.(9010)
input.tsx(3, 14): Add a type annotation to the variable bar.
foo would also have a type error if as const was added to the expression.
🙂 Expected behavior
No type error
Additional information about the issue
fun fact: I accidentally discovered this behavior when I found that oxc-transform has type errors for both const, let, and return types.
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.
Research direction
Start with the linked TypeScript Playground and reproduce the isolatedDeclarations diagnostic for the exported const, then compare it with the let and function examples in the issue. Trace the compiler path responsible for inferring types for these declarations; done means the literal-only template expression no longer requires an explicit annotation and the existing cases remain correct.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100