首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@类型和类型类型解析

@类型和类型类型解析
EN

Stack Overflow用户
提问于 2018-02-01 10:52:31
回答 2查看 2K关注 0票数 1

我有一个包含聚合物@next作为纱线模块的项目,并将其添加为纯JS库。我想使用来自高分子2.4GitHubrepo的类型文件夹中的类型:https://github.com/Polymer/polymer/tree/2.4-pre/types

因此,我开始创建一个@types文件夹,并在其中添加一个@高分子文件夹,其中包含一个package.json和index.d.ts以及回购程序中的所有文件。

无论我如何尝试,tsc都不会发现和接受聚合物元素的类型。它在@type文件夹中作为一个文件在聚合物中..。

my @类型的结构包含:

代码语言:javascript
复制
+ @types
++++ @polymer
------ package.json
------ index.d.ts
------ polymer-element.d.ts

我的代码(app.ts)包含:从“@高分子/聚合物/聚合物-元素”导入{ Element }。

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

代码语言:javascript
复制
 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没有给我正确的洞察力?

谢谢约翰。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-01 12:39:07

好的,我基本上创建了一个@type文件夹,并为每个导入的命名模块创建了一个文件夹:

代码语言:javascript
复制
import '@polymer/polymer/polymer'
import { Element } '@polymer/polymer/polymer-element'

我直接在@types文件夹下创建了一个子文件夹,每个文件夹都包含一个index.d.ts文件,因此结构如下:

代码语言:javascript
复制
@types
 ----@polymer
 --------index.d.ts
 ----@polymer-element
 --------index.d.ts

在这些索引类型文件中,我引用了从repo (高分子2.4)下载的类型定义,并创建了如下所示的命名模块定义:

代码语言:javascript
复制
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) {
  }
}

现在起作用了。

票数 3
EN

Stack Overflow用户

发布于 2018-02-01 11:20:51

当@Polymer被定义时,它是一个名称空间,并且没有export成员,所以尝试使用这个解决方法:

进口polymerElement =要求(“@聚合物/聚合物/聚合物-元素”);

如果它不起作用,试着只使用@polymer /lib路径中的一种类型,看看它是否至少解决了这个问题。

看看这个:import foo = require('foo')

编辑-- 解决方案1

应该解决implicitly has an 'any' type错误,更改tsconfig文件:

代码语言:javascript
复制
{ "compilerOptions": 
{ "target": "es5", 
"module": "commonjs", 
"moduleResolution": "node", 
"sourceMap": true, 
"emitDecoratorMetadata": true, 
"experimentalDecorators": true, 
"removeComments": false, 
"noImplicitAny": false // <----- 
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48560996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档