Microsoft/TypeScript

[isolatedDeclarations] Type of const variable declared with template literal expression containing only literals still requires explicit annotation

开放

#59,157 创建于 2024年7月6日

 (0 条评论) (0 个反应) (0 位负责人)TypeScript (13,395 个派生)batch import
Domain: flag: isolatedDeclarationsHelp WantedPossible Improvement

仓库指标

星标
 (108,860 个星标)
PR 合并指标
 (平均合并 6天 17小时) (30 天内合并 9 个 PR)

描述

🔎 Search Terms

isolated declarations template literal expression

🕗 Version & Regression Information

  • This is the behavior in every version I tried

⏯ Playground Link

https://www.typescriptlang.org/play/?isolatedDeclarations=true&ts=5.6.0-dev.20240705#code/KYDwDg9gTgLgBAG2PAZhCcC8cAGASAbwHIiBfHAbgCgrRJY4BjCAOwGd4AjAQyi10Ily1WuGioAri0YwAlqzg8AXgAoAlHAJU4OuFGQSoLAcTKUqpIA

💻 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.

贡献者指南