Svelte 5中{#snippet}参数隐式any类型报错,求更优解决方案
Svelte 5 {#snippet} 语法参数隐式any类型问题解决办法
升级到Svelte 5后使用新的{#snippet}语法时,遇到参数隐式any类型的错误,示例代码如下:
{#snippet NavLink(href, text)} <a class="text-white" {href}>{text}</a> {/snippet}
报错信息:Parameter href implicitly has an any type
现有临时方案是用/** @type {any} */标注,但并不理想,以下是更好的解决办法:
方法1:通过JSDoc显式指定参数类型
如果项目未使用TypeScript,可以用JSDoc注释给参数声明明确类型:
{#snippet NavLink(/** @type {string} */ href, /** @type {string} */ text)} <a class="text-white" {href}>{text}</a> {/snippet}
方法2:直接使用TypeScript类型声明
如果项目启用了TypeScript,可直接在参数后添加类型注解:
{#snippet NavLink(href: string, text: string)} <a class="text-white" {href}>{text}</a> {/snippet}
说明
Svelte 5在TypeScript严格模式下会严格检查隐式any类型,这属于TS的规范要求,官方文档可能暂未详细提及该场景。给参数指定明确类型既能解决报错,也能提升代码的类型安全性,比用any掩盖问题更合理。
内容的提问来源于stack exchange,提问作者ignacio
相关产品推荐
相关产品推荐

