使用lit@3.0.0与TS@5.2.0时TemplateResult非泛型报错问询
问题描述
使用 lit@3.0.0 与 TypeScript@5.2.0 构建组件后,生成的 my-component.d.ts 中包含如下代码:
render(): import("lit-html").TemplateResult<1> | undefined;
但编译时抛出错误:
error TS2315: Type 'TemplateResult' is not generic
问题原因
这个错误的核心是lit@3.x 版本中,TemplateResult 已不再是泛型类型,但生成的类型定义文件却沿用了旧版的泛型写法,具体诱因分为以下几种:
依赖版本冲突:项目中可能存在旧版
lit-html(如 2.x)的依赖残留,或是其他第三方依赖间接引入了lit-html@2.x。旧版TemplateResult是带泛型参数的类型,而lit@3.0.0配套的lit-html@3.x已将其改为非泛型,TypeScript 解析时同时读取到新旧两种类型定义,导致冲突报错。构建工具类型生成适配问题:部分打包/类型生成工具(如 Rollup 的 TypeScript 插件、tsc 的某些编译选项)未适配
lit@3.x的类型变更。在lit@2.x中,TemplateResult需要泛型参数标记模板类型,但 3.x 已移除该设计,工具仍按照旧逻辑生成了带泛型的类型声明。TypeScript 配置或解析问题:若
tsconfig.json中未开启skipLibCheck,TypeScript 会严格检查所有依赖的类型定义;或是moduleResolution配置导致 TypeScript 优先解析了旧版lit-html的类型文件,而非lit@3.0.0配套的新版本类型。
内容的提问来源于stack exchange,提问作者Marc Rasmussen
相关产品推荐
相关产品推荐

