Typescript @类型和类型脚本类型解析

Typescript @类型和类型脚本类型解析,typescript,typescript-typings,yarnpkg,tsc,Typescript,Typescript Typings,Yarnpkg,Tsc,我有一个包含polymer@next作为纱线模块,将其添加为纯JS库。。我想使用polymer 2.4 github repo中types文件夹中的打字,可以在这里找到: 所以我开始创建一个@types文件夹,并在其中添加一个@polymer文件夹,其中包含package.json和index.d.ts以及repo中的所有文件 无论我如何尝试,tsc都不会发现并接受聚合物元素类型。。它在@types文件夹中作为文件存在于polymer my@typings的结构包括: + @types ++++

我有一个包含polymer@next作为纱线模块,将其添加为纯JS库。。我想使用polymer 2.4 github repo中types文件夹中的打字,可以在这里找到:

所以我开始创建一个@types文件夹,并在其中添加一个@polymer文件夹,其中包含package.json和index.d.ts以及repo中的所有文件

无论我如何尝试,tsc都不会发现并接受聚合物元素类型。。它在@types文件夹中作为文件存在于polymer

my@typings的结构包括:

+ @types
++++ @polymer
------ package.json
------ index.d.ts
------ polymer-element.d.ts
我的代码(app.ts)包含: 从“@polymer/polymer/polymer Element”导入{Element}

我还尝试将“polymer element.d.ts”放置在“polymer”子文件夹中,但这也会产生相同的错误:

 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-Tracesolution没有给我正确的见解

塔克斯
John.

定义@Polymer时,它是一个名称空间,并且(如我所见)没有导出成员,因此请尝试以下解决方法:

导入聚合物释放=需要(“@polymer/polymer/polymer element”)

如果它不起作用,请尝试使用@polymer/lib路径中的一种类型,看看它是否至少解决了该类型

看看这个:

编辑--解决方案1

隐式地具有“any”类型
错误应通过更改tsconfig文件来解决:

{“编译器选项”:
{“目标”:“es5”,
“模块”:“commonjs”,
“moduleResolution”:“节点”,
“源地图”:正确,
“emit decoromentadata”:正确,
“实验生态学者”:没错,
“removeComments”:false,

“noImplicitAny”:false/好的,因此我基本上创建了一个@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(polymer 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) {
  }
}

现在它工作了…

相同的错误,它没有拾取polymer-element.d.ts,下面是错误:错误TS7016:找不到模块“@polymer/polymer/polymer element.”的声明文件。/Users/johngorter/Desktop/polymernext/node_modules/@polymer/polymer/polymer element.js”隐式地具有“any”类型。首先:
隐式地更改tsconfig文件{“compilerOptions”:{“target”:“es5”,“module”:“commonjs”,“moduleResolution”:“node”,“sourceMap”:true,“emitDecoratorMetadata”:true,“experimentalDecorators”:true,“removeComments”:false,
“noImplicitAny”:false
//我不想要隐式,我想要元素被键入,因此它不是任何的……更改tsconfig会删除错误,但是我会有一个隐式的any……您想要键入的元素来自您的库,带有
any
类型。我想您必须直接更改它,或者尝试在g上打开一个问题itHub项目。我将编辑第一个解决方案的答案=)“您要键入的元素来自您的库中的任何类型。”我不明白。“@polymer/polymer/polymer element”来自polymer模块,我只想使用它并支持typescript。.我自己在@types文件夹中创建了一个polymer-element.d.ts文件,以便将类型信息添加到此模块,但它没有被拾取,因此在我添加的类型文件中隐式键入“Any”(polymer element.d.ts),我显式地将其键入为any,因此这不会触发错误..错误表明找不到类型文件。。。