Class 从Typescript中的声明接口扩展类
有没有办法像类一样对待typescript声明文件中的接口或变量,以便能够从中扩展类 像这样:Class 从Typescript中的声明接口扩展类,class,interface,typescript,declaration,extend,Class,Interface,Typescript,Declaration,Extend,有没有办法像类一样对待typescript声明文件中的接口或变量,以便能够从中扩展类 像这样: declare module "tedious" { import events = module('events'); export class Request extends event.EventEmitter { constructor (sql: string, callback: Function); addParameter(name: str
declare module "tedious" {
import events = module('events');
export class Request extends event.EventEmitter {
constructor (sql: string, callback: Function);
addParameter(name: string, type: any, value: string):any;
addOutputParameter(name: string, type: any): any;
sql:string;
callback: Function;
};
}
现在我必须像这样重新定义EventEmitter接口,并使用我自己的EventEmitter声明
import events = module('events');
class EventEmitter implements events.NodeEventEmitter{
addListener(event: string, listener: Function);
on(event: string, listener: Function): any;
once(event: string, listener: Function): void;
removeListener(event: string, listener: Function): void;
removeAllListener(event: string): void;
setMaxListeners(n: number): void;
listeners(event: string): { Function; }[];
emit(event: string, arg1?: any, arg2?: any): void;
}
export class Request extends EventEmitter {
constructor (sql: string, callback: Function);
addParameter(name: string, type: any, value: string):any;
addOutputParameter(name: string, type: any): any;
sql:string;
callback: Function;
};
然后在我的TypeScript文件中扩展它
import tedious = module('tedious');
class Request extends tedious.Request {
private _myVar:string;
constructor(sql: string, callback: Function){
super(sql, callback);
}
}
它应该可以正常工作,例如:
// Code in a abc.d.ts
declare module "tedious" {
export class Request {
constructor (sql: string, callback: Function);
addParameter(name: string, type: any, value: string):any;
addOutputParameter(name: string, type: any): any;
sql:string;
callback: Function;
};
}
// Your code:
///<reference path='abc.d.ts'/>
import tedious = module('tedious');
class Request extends tedious.Request {
private _myVar:string;
constructor(sql: string, callback: Function){
super(sql, callback);
}
}
//abc.d.ts中的代码
声明模块“乏味”{
导出类请求{
构造函数(sql:string,callback:Function);
addParameter(名称:string,类型:any,值:string):any;
addOutputParameter(名称:string,类型:any):any;
sql:string;
回调函数;
};
}
//您的代码:
///
导入冗长=模块(“冗长”);
类请求扩展了繁琐的.Request{
private_myVar:string;
构造函数(sql:字符串,回调:函数){
super(sql,回调);
}
}
您在文件中输入的任何内容都可以输入.d.ts文件
我不知道2013年的情况,但现在很简单:
/// <reference path="../typings/node/node.d.ts" />
import * as events from "events";
class foo extends events.EventEmitter {
constructor() {
super();
}
someFunc() {
this.emit('doorbell');
}
}
//
从“事件”导入*作为事件;
类foo扩展了events.EventEmitter{
构造函数(){
超级();
}
someFunc(){
这个.emit(‘门铃’);
}
}
我一直在寻找这个问题的答案,最后终于找到了答案。但是我会错过所有的EventEmitter实现,Typescript会出现一个缺少属性的错误。这就是我首先重新定义nodejseventemmiter类的原因。