Javascript 使用TypeScript创建NodeJS模块

Javascript 使用TypeScript创建NodeJS模块,javascript,node.js,typescript,commonjs,Javascript,Node.js,Typescript,Commonjs,我正在尝试用TypeScript编写一个节点模块,这就是我所做的: MysqlMapper.ts export class MysqlMapper{ private _config: Mysql.IConnectionConfig; private openConnection(): Mysql.IConnection{ ... } private createSelectAllQuery(constructor): string{

我正在尝试用TypeScript编写一个节点模块,这就是我所做的:

MysqlMapper.ts

export class MysqlMapper{

    private _config: Mysql.IConnectionConfig;

    private openConnection(): Mysql.IConnection{
        ...
    }

    private createSelectAllQuery(constructor): string{
    ...
    }

    public getAll<T>(constructor): Q.Promise<Array<T>>{
    .....
    }
    constructor(config: Mysql.IConnectionConfig){
    ... 
    }

}
export * from "./MysqlMapper";
export * from "./MysqlMapper";
import * as Q from "q";
import * as Mysql from "mysql";
export declare class MysqlMapper {
    private _config;
    private openConnection();
    private createSelectAllQuery(constructor);
    getAll<T>(constructor: any): Q.Promise<Array<T>>;
    constructor(config: Mysql.IConnectionConfig);
}
package.json

{
  "name": "mysql-metadata-orm",
  "version": "1.0.0",
  "description": "A Simple ORM using reflect-metadata",
  "main": "build/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "..."
  },
  "author": "+",
  "license": "MIT",
  "dependencies": {
    "mysql": "^2.9.0",
    "q": "^1.4.1",
    "reflect-metadata": "^0.1.2"
  }
}
我在我的tsconfig文件中激活了声明生成,但我真的不知道如何获得一个声明文件,允许像这样导入模块:

import * as Mapper from "mysql-metadata-mapper"
我希望有人能帮我,因为这让我很疯狂

@更新

以下是生成的.d.ts文件:

索引d.ts

export class MysqlMapper{

    private _config: Mysql.IConnectionConfig;

    private openConnection(): Mysql.IConnection{
        ...
    }

    private createSelectAllQuery(constructor): string{
    ...
    }

    public getAll<T>(constructor): Q.Promise<Array<T>>{
    .....
    }
    constructor(config: Mysql.IConnectionConfig){
    ... 
    }

}
export * from "./MysqlMapper";
export * from "./MysqlMapper";
import * as Q from "q";
import * as Mysql from "mysql";
export declare class MysqlMapper {
    private _config;
    private openConnection();
    private createSelectAllQuery(constructor);
    getAll<T>(constructor: any): Q.Promise<Array<T>>;
    constructor(config: Mysql.IConnectionConfig);
}
MysqlMapper.d.ts

export class MysqlMapper{

    private _config: Mysql.IConnectionConfig;

    private openConnection(): Mysql.IConnection{
        ...
    }

    private createSelectAllQuery(constructor): string{
    ...
    }

    public getAll<T>(constructor): Q.Promise<Array<T>>{
    .....
    }
    constructor(config: Mysql.IConnectionConfig){
    ... 
    }

}
export * from "./MysqlMapper";
export * from "./MysqlMapper";
import * as Q from "q";
import * as Mysql from "mysql";
export declare class MysqlMapper {
    private _config;
    private openConnection();
    private createSelectAllQuery(constructor);
    getAll<T>(constructor: any): Q.Promise<Array<T>>;
    constructor(config: Mysql.IConnectionConfig);
}
从“Q”导入*为Q;
从“Mysql”导入*作为Mysql;
导出声明类MysqlMapper{
私有配置;
私有openConnection();
私有createSelectAllQuery(构造函数);
getAll(构造函数:任意):Q.承诺;
构造函数(config:Mysql.IConnectionConfig);
}

如何获取声明文件?

我建议您制作自己的声明文件:(例如
globals.d.ts

然后您可以引用此声明文件,例如。
//

并根据需要使用以下工具导入模块:

import*作为“mysql元数据映射器”的映射器


我不能100%确定这是否是最干净的解决方案,但至少它应该按照您的要求工作。

您可以在这里发布自动生成的声明为该模块生成了什么吗?我知道这是一个非常古老的问题,但对于稍后遇到它的任何其他人(就像我上周所做的那样),您可能会发现这个typescript样板项目很有帮助:首先感谢您的回答,但是您的建议有一些问题,首先不允许使用-in元数据映射器,没问题我更改了名称。但是现在我在import语句中得到一个错误:环境模块声明中的import或export声明无法通过相对模块名引用模块。我明白了-我没有用名称中的破折号测试它。您是否尝试在不使用“/”的情况下导入?是的,我尝试过,但在经过一些研究后发现该模块不是这种方式,似乎通过声明ambient module无法以这种方式工作。一定有别的办法,但我现在也没有建议。我会尽快回来回答这个问题。好的,谢谢你的打扰,我已经检查了其他节点模块的定义文件,但我没有落后于系统:/