TypeScript 1.4 CommonJS 模块公开为构造函数
TypeScript 1.4 CommonJS modules exposed as constructors
This question 非常 接近我的问题,linked 问题中的评论真的很有帮助,但我似乎无法做出纯 "ghost" 模块。
我正在努力处理的代码可以 be found here 我有一个文件 "mariasql.d.ts" 和一个测试文件 "mariasql-tests.ts"。 *.d.ts 文件公开了一个构造函数,其工作方式如下:
var Client = require('mariasql),
c = new Client();
根据另一个 SO 问题,*.d.ts 文件导出如下:
module MARIASQL {
//... edited for brevity
export interface MariaClient {
connect(config:ClientConfig):void;
end():void;
destroy():void;
escape(query:string):string;
query(q:string, placeHolders?:Dictionary, useArray?:boolean):MariaQuery;
query(q:string, placeHolders?:Array<any>, useArray?:boolean):MariaQuery;
query(q:string, useArray?:boolean):MariaQuery;
prepare(query:string): MariaPreparedQuery;
isMariaDB():boolean;
on(signal:string, cb:MariaCallBackError): MariaClient; // signal 'error'
on(signal:string, cb:MariaCallBackObject): MariaClient; // signal 'close'
on(signal:string, cb:MariaCallBackVoid): MariaClient; // signal 'connect'
connected: boolean;
threadId: string;
}
export interface Client {
new ():MariaClient;
():MariaClient;
prototype: MariaClient;
}
}
declare module "mariasql" {
var Client:MARIASQL.Client;
export = Client;
}
测试文件中的导入代码如下所示:
/// <reference path="../node/node-0.10.d.ts" />
/// <reference path="./mariasql.d.ts" />
// Example 1 - SHOW DATABASES
import util = require('util');
import Client = require('mariasql');
var c:Client = new Client(),
inspect = util.inspect;
// edited ...
注意 - github link 将读取 c:Client.prototype
也不起作用。
我觉得我一定是误解了一些明显的东西。
你拥有的一切都很好。唯一需要的小修复是在你的测试中而不是
var c:Client.prototype = new Client(),
您需要使用的接口:
var c: MARIASQL.MariaClient = new Client(),
或者完全删除它,让编译器为您推断它;)。
This question 非常 接近我的问题,linked 问题中的评论真的很有帮助,但我似乎无法做出纯 "ghost" 模块。
我正在努力处理的代码可以 be found here 我有一个文件 "mariasql.d.ts" 和一个测试文件 "mariasql-tests.ts"。 *.d.ts 文件公开了一个构造函数,其工作方式如下:
var Client = require('mariasql),
c = new Client();
根据另一个 SO 问题,*.d.ts 文件导出如下:
module MARIASQL {
//... edited for brevity
export interface MariaClient {
connect(config:ClientConfig):void;
end():void;
destroy():void;
escape(query:string):string;
query(q:string, placeHolders?:Dictionary, useArray?:boolean):MariaQuery;
query(q:string, placeHolders?:Array<any>, useArray?:boolean):MariaQuery;
query(q:string, useArray?:boolean):MariaQuery;
prepare(query:string): MariaPreparedQuery;
isMariaDB():boolean;
on(signal:string, cb:MariaCallBackError): MariaClient; // signal 'error'
on(signal:string, cb:MariaCallBackObject): MariaClient; // signal 'close'
on(signal:string, cb:MariaCallBackVoid): MariaClient; // signal 'connect'
connected: boolean;
threadId: string;
}
export interface Client {
new ():MariaClient;
():MariaClient;
prototype: MariaClient;
}
}
declare module "mariasql" {
var Client:MARIASQL.Client;
export = Client;
}
测试文件中的导入代码如下所示:
/// <reference path="../node/node-0.10.d.ts" />
/// <reference path="./mariasql.d.ts" />
// Example 1 - SHOW DATABASES
import util = require('util');
import Client = require('mariasql');
var c:Client = new Client(),
inspect = util.inspect;
// edited ...
注意 - github link 将读取 c:Client.prototype
也不起作用。
我觉得我一定是误解了一些明显的东西。
你拥有的一切都很好。唯一需要的小修复是在你的测试中而不是
var c:Client.prototype = new Client(),
您需要使用的接口:
var c: MARIASQL.MariaClient = new Client(),
或者完全删除它,让编译器为您推断它;)。