Typescript Node.js 原型无法编译
Typescript Node.js Prototype Won't Compile
我似乎无法弄清楚我在这里做错了什么。
我想用原型方法扩展我的 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
文件中。
更多:查看修改本机类型:https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html
我真的解决了。我意识到我需要在 custom.d.ts
那个 Firebase 中 declare
。
/// <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);
}
});
}
我似乎无法弄清楚我在这里做错了什么。 我想用原型方法扩展我的 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
文件中。
更多:查看修改本机类型:https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html
我真的解决了。我意识到我需要在 custom.d.ts
那个 Firebase 中 declare
。
/// <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);
}
});
}