如何在 Ionic 2 typescript 应用程序上使用没有类型定义的 javascript 库?

Posted

技术标签:

【中文标题】如何在 Ionic 2 typescript 应用程序上使用没有类型定义的 javascript 库?【英文标题】:How to use a javascript library without type definition on Ionic 2 typescript app? 【发布时间】:2017-12-19 12:24:10 【问题描述】:

我正在尝试在我的 ionic 2 typescript 应用程序上使用 Jquery Bracket 库。但是,该库没有类型定义。因此,我尝试以传统方式使用它。我将库的 js 和 CSS 文件放入我的 src/assets 文件夹中,并将必要的标签添加到我的 src/index.html 文件中。最后,我在我的打字稿文件中声明了一个变量,并尝试按照图书馆网站上的示例中的建议使用它。

import  Component  from '@angular/core';
import  NavController  from 'ionic-angular';
import * as $ from 'jquery'

declare var Options: any;

    @Component(
      selector: 'page-tournament-schedule',
      templateUrl: 'tournament-schedule.html'
    )
    export class TournamentSchedulePage 

      constructor(public navCtrl: NavController) 
      

      ionViewDidLoad() 
        console.log('Hello TournamentSchedule Page');
        this.getBrackets();
      

      getBrackets() 
        var singleElimination = 
          "teams": [              // Matchups
            ["Team 1", "Team 2"], // First match
            ["Team 3", "Team 4"]  // Second match
          ],
          "results": [            // List of brackets (single elimination, so only one bracket)
            [                     // List of rounds in bracket
              [                   // First round in this bracket
                [1, 2],           // Team 1 vs Team 2
                [3, 4]            // Team 3 vs Team 4
              ],
              [                   // Second (final) round in single elimination bracket
                [5, 6],           // Match for first place
                [7, 8]            // Match for 3rd place
              ]
            ]
          ]
        
        $('.demo').Options.bracket(
          init: singleElimination
        );
      
    

但是,它给了我以下错误

无法读取未定义的属性“括号”

【问题讨论】:

您从哪里获得选项?我在文档中找不到它,我认为您的问题与类型定义无关,只是您的 $('.demo').Options 未定义。顺便说一句,如果您愿意,可以为该库添加自定义类型你的项目。 我试过了,就像支架一样,它也不起作用@AlexanderTuniev 有同样的错误? @AlexanderTuniev 说括号没有定义 【参考方案1】:

试试下面的。 创建一个 ts 文件,将其命名为 customTyping.d.ts 或类似名称,添加以下内容,

    interface JQuery 
      brackets?: any;
    

然后将该文件包含在 tsconfig.json 中

"include": [
    "...",
    "...",
    "pathto/customTypings.d.ts"
  ]

这样您将在 JQuery 中定义括号的类型。让我知道这是否有帮助。

【讨论】:

这样做之后,我需要再次声明一个变量还是可以像文档中那样使用它? 我像在文档中一样使用它,它说括号不是函数 你是如何在你的项目中包含那个库的?,也许它不可用? 我通过 npm 安装它,然后将 js 和 css 文件放入 src/assets 文件夹,然后将标签包含到我的 src/index.html 文件中 看看这个,netbasal.com/…

以上是关于如何在 Ionic 2 typescript 应用程序上使用没有类型定义的 javascript 库?的主要内容,如果未能解决你的问题,请参考以下文章

在 Ionic 2 中使用第三方 cordova 插件和 TypeScript

使用 ionic 2 而不是 typescript 应用程序创建一个 javascript starter 应用程序

如何在使用 Typescript 的 Ionic App 上集成 API.AI?

使用 Typescript 的 Ionic 1 应用程序中的 Cordova 插件

如何解决 rxjs Typescript 错误(Ionic 3,angularfire2)

添加滚动到顶部按钮(Ionic 2 | Typescript)