Typescript Node.js原型不会编译

我似乎无法弄清楚我在这里做错了什么。 我想用原型方法扩展Firebase对象

但是我得到:

Property 'foo' does not exist on type 'Firebase'

 /// <reference path="./tsd.d.ts"/> import Firebase = require('firebase'); interface Firebase { foo : () => string } Firebase.prototype.foo = function(): string { return "foo"; } var myRootRef = new Firebase('myUrl'); firebase.foo() // property 'foo' does not exist on type 'Firebase'. 

由于您在代码中有一个import

 import Firebase = require('firebase'); 

您的文件现在是一个模块,并且interface Firebase {与全局名称空间断开连接。 将此声明移到global.d.ts文件中。

更多:请参阅修改本机types: https : //basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html

我真的解决了它。 我意识到我需要在custom.d.tsdeclare Firebase。

 /// <reference path="../firebase/firebase.d.ts"/> /// <reference path="../rx/rx.d.ts"/> /// <reference path="../rx/rx-lite.d.ts"/> interface Firebase { rx_observe : (eventType: string) => Rx.Observable<FirebaseDataSnapshot> } declare var fb : Firebase declare module 'custom' { export = fb } 

现在我包含了我的原型声明。

 import Firebase = require('firebase'); import Rx = require('rx'); Firebase.prototype.__proto__.rx_observe = function(eventType: string): Rx.Observable<FirebaseDataSnapshot> { var self: Firebase = this; return Rx.Observable.create<FirebaseDataSnapshot>(observer => { var listener = self.on(eventType, (snapshot) => { observer.onNext(snapshot); }) return () => { self.off(eventType, listener); } }); }