@types和打字稿类型解析

时间:2018-02-01 10:52:32

标签: typescript typescript-typings yarnpkg tsc

我有一个项目,其中包含聚合物@ 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没有给我正确的见解?

感谢名单 约翰。

2 个答案:

答案 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

相关问题