我有一个项目,其中包含聚合物@ next作为纱线模块,将其添加为纯JS库..我想使用来自聚合物2.4 github repo的types文件夹中的类型:https://github.com/Polymer/polymer/tree/2.4-pre/types < / p>
所以我开始创建一个@types文件夹并在其中添加一个@polymer文件夹,其中包含一个package.json和index.d.ts以及repo中的所有文件。
无论我尝试什么,tsc都找不到并接受聚合物元素类型..它在@types文件夹中作为聚合物中的文件......
我的@typings的结构包含:
+ @types
++++ @polymer
------ package.json
------ index.d.ts
------ polymer-element.d.ts
我的代码(app.ts)包含: 从&#39; @ polymer / polymer / polymer-element&#39;
导入{Element}我还尝试将聚合物元素放在&lt; element-element.d.ts&#39;在一种聚合物中子文件夹,但这也会产生相同的错误:
src/myapp.ts(3,25): error TS7016: Could not find a declaration file for
module '@polymer/polymer/polymer-element'.
'/Users/johngorter/Desktop/polymernext/node_modules/@polymer/polymer/polymer-element.js' implicitly has an 'any' type.
Try `npm install @types/@polymer/polymer/polymer-element` if it exists or add a new declaration (.d.ts) file containing `declare module '@polymer/polymer/polymer-element';`
我在这里缺少什么?为什么tsc -traceResolution没有给我正确的见解?
感谢名单 约翰。
答案 0 :(得分:2)
好的,所以我基本上为每个导入的命名模块创建了一个@types文件夹:
import '@polymer/polymer/polymer'
import { Element } '@polymer/polymer/polymer-element'
我在@types文件夹下直接创建了一个子文件夹,每个子文件夹都包含一个index.d.ts文件,因此结构为:
@types
----@polymer
--------index.d.ts
----@polymer-element
--------index.d.ts
在这些索引类型文件中,我引用了repo(聚合物2.4)中下载的类型定义,并创建了一个命名的模块定义,如下所示:
declare module "@polymer/polymer/polymer-element" {
/**
* Base class that provides the core API for Polymer's meta-programming
* features including template stamping, data-binding, attribute deserialization,
* and property change observation.
*/
class Element extends
Polymer.ElementMixin(
HTMLElement) {
}
}
现在它有效......
答案 1 :(得分:0)
在定义@Polymer时,它是一个命名空间,并且(如我所见)没有datestamp: yyyy-mm-dd HH:mm:ss
cmb_scenario: text
个成员,所以请尝试使用此解决方法:
import polymerElement = require('@ polymer / polymer / polymer-element');
如果它不起作用,请尝试只使用@polymer / lib路径中的一种类型,看看它是否至少解决了那个问题。
看看这个:New es6 syntax for importing commonjs / amd modules i.e. `import foo = require('foo')`
编辑 - 解决方案1
更改tsconfig文件应该解决 export
错误:
implicitly has an 'any' type