TypeScript对Polymer V3的支持问题:元素继承类型识别异常
Polymer 3预览版 + TypeScript:解决HTMLElement方法类型校验问题
Hey,我最近也在折腾Polymer 3预览版的团队集成,刚好踩过这个类型校验的坑,来给你捋捋怎么解决:
首先,先确认下Polymer 3里自定义元素的标准写法,确实是你提到的这样:
import { PolymerElement } from '@polymer/polymer/polymer-element.js'; class MyElement extends PolymerElement { // 你的元素逻辑 }
基础功能跑起来没问题,但TypeScript确实会犯懵——它没法自动推断PolymerElement是继承自HTMLElement的,所以调用this.dispatchEvent这类原生API时就会报类型错误。
我目前用的临时解决方案是手动补全类型声明:
- 在项目根目录创建一个
polymer-typings.d.ts文件 - 写入以下类型定义代码:
declare module '@polymer/polymer/polymer-element.js' { export class PolymerElement extends HTMLElement { // 可以根据自己的需求,补充PolymerElement特有的属性或方法类型 } }
写完之后,TypeScript就能正确识别MyElement的原型链,原生HTMLElement的方法也能顺利通过类型校验了。
另外,因为现在Polymer 3还处于预览阶段,官方的TypeScript类型定义可能还没完全跟上,后续可以留意官方的更新,应该会推出更完善的类型支持。
内容的提问来源于stack exchange,提问作者Typing Tanuki
相关产品推荐
相关产品推荐

