对polymer v3的Typescript支持
我目前正在测试polymer 3 preview,以了解如何将其集成到我们的团队工作流程中 建议在v3中声明元素的方法是:对polymer v3的Typescript支持,typescript,polymer,typescript-typings,polymer-3.x,Typescript,Polymer,Typescript Typings,Polymer 3.x,我目前正在测试polymer 3 preview,以了解如何将其集成到我们的团队工作流程中 建议在v3中声明元素的方法是: import { PolymerElement } from '@polymer/polymer/polymer-element.js'; ... class MyElement extends PolymerElement { ... } 见: 对于基本的东西,这与typescript配合得很好,但是它不理解类MyElement扩展了HTMLElement。因此,如
import { PolymerElement } from '@polymer/polymer/polymer-element.js';
...
class MyElement extends PolymerElement {
...
}
见:
对于基本的东西,这与typescript配合得很好,但是它不理解类MyElement扩展了HTMLElement。因此,如果我尝试在代码中使用this.dispatchEvent(…),编译将失败
我试着设置一个.d.ts来教打字稿,但我无法让它工作。所有这些都非常不成功
1) 直接打字:
class PolymerElement extends HTMLElement{}
2) 键入模块:
declare module "polymer-element" {
export class PolymerElement extends HTMLElement {}
}
和一些更多的变化,但它似乎从来没有被挑出的运输。
有IDA吗?v3似乎还不支持打字脚本 您可以在标题栏中看到提交 解决方案: 1.只需对TypeScript说“不在乎”:
class MyElement extends PolymerElement {
fn(){
(this as any).dispatchEvent(...)
}
}
2.您的元素可以从HTMLElement
声明为extends direclty:
class MyElement extends PolymerElement, HTMLElement {
fn() {
this.dispatchEvent(...)
}
}
我很确定您必须将模块声明为
“@polymer/polymer/polymer element”
,而不仅仅是“polymer element”
,除非您将键入直接添加到@polymer/polymer
节点模块中的路径@polymer/polymer
另外,我不确定您应该导入
polymer element.js,而是导入polymer element
。.js
扩展可能会中断添加打字。从3.0.5版开始,类型脚本声明包含在NPM包本身中,对于从3.0.0版开始的所有铁-
,纸-
等元素
从'@polymer/polymer'导入{polymerement,html};
类MyElement扩展了聚合关系{
静态获取模板(){
返回html`Hello[[who]]`;
}
静态获取属性(){
返回{
谁:弦,
};
}
who=‘世界’;
}
自定义元素。定义('my-element',MyElement);
您还可以使用该包获得更好的类型安全性和更方便的语法:
从'@polymer/polymer'导入{polymerement,html};
从“@polymer/decorators”导入{customElement,property};
@customElement(“我的元素”)
类MyElement扩展了聚合关系{
静态获取模板(){
返回html`Hello[[who]]`;
}
@属性({type:String})
who=‘世界’;
}
即使他们没有正式的打字,也应该可以编写自定义的,以允许typescript工作。你是对的,我提出了第二种解决方案,这需要在所有类中添加一个额外的类型。遗憾的是,第二个解决方案失败了,类只能扩展一个类。
我很确定您必须将模块声明为“@polymer/polymer/polymer element”
,而不仅仅是“polymer element”
,除非您将打字直接添加到节点\u模块中的路径@polymer/polymer
。此外,我不确定您是否应该导入polymer element.js
而不是导入polymer element
。.js
扩展可能会中断添加打字。您给了我正确的方向。我要做的是1)将文件声明为@polymer/index.d.ts
2)将模块声明为@polymer/polymer/polymer element
,但3)导入polymer element
,而不是.js
文件@amit-b请随意发布一个实际答案。您是否也知道如何获取聚合物元素的打字(即纸张输入)?我可以看到每个元素在其repo中都有一个typings.d.ts文件,但是当使用NPM获取时,它们并不包括在内。我曾考虑过使用gen typescript脚本,但在项目中包含typescript感觉像是一种黑客行为。3.0元素的打字还没有完全准备好,但工作正在进行中。它们将与最终版本3.0一起发布,或者在不久之后,有时在接下来的几周内发布。所有3.0聚合物元素的打字脚本本周已发布到NPM()。这太棒了,感谢大家的提醒!我再试试看。