TypeScript - 来自另一个JavaScript文件的Initialise属性

时间:2012-10-15 16:53:23

标签: typescript firebase

我一起使用TypeScript和Firebase。

我的班级有fireybase: FirebaseInterface;属性。

使用this.fireybase = new Firebase('URL/');

初始化时

我收到有关Firebase对象的编译时错误。

The name 'Firebase' does not exist in the current scope

interface FirebaseInterface {
    set(s:string): any;
}

我尝试将Firebase接口添加到库中,但它仍然不喜欢它。

在TypeScript中执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

typescript编译器告诉您它无法找到类型Firebase,因此您需要引入它。在您的情况下,如果firebase库的提供程序想要支持Typescript中的开发,则需要提供指定类型Firebase(和依赖类型)的声明文件。在您的情况下,简单的Firebase.d.ts文件可能如下所示:

<强> Firebase.d.ts

declare class Firebase {    
    constructor(u:string);    
    set(s:string): any;
}

然后,您需要使用引用声明将声明文件放入作用域,如下所示:

<强> MyApp.ts

///<reference path='firebase.d.ts'/>
class MyApp {  
    fireybase: Firebase;  
    constructor () => {
        this.fireybase = new Firebase('URL/');
    }
}

您可以在language specification中了解有关声明文件和参考路径的更多信息。

答案 1 :(得分:1)

我认为您需要对包含Firebase静态定义的模块的引用。也许快速解决方法是在文件顶部使用以下语句:

declare var Firebase: any;