2015-11-08 87 views
0

我想写与打字稿节点模块,这是我在多大程度上得到:创建模块的NodeJS与打字稿

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){ 
    ... 
    } 

} 

index.ts

export * from "./MysqlMapper"; 

的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" 

我希望有人可以帮助我,因为它使我非常疯狂。

@Update

这些是产生.d.ts档案:

index.d.ts

export * from "./MysqlMapper"; 

MysqlMapper.d.ts

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); 
} 

如何获取声明文件?

+0

你可能会在这里发布自动生成的声明为这个模块产生了什么? – FlorianTopf

+0

当然我可以 – Ced

+0

我知道这是一个非常古老的问题,但对于其他任何人稍后绊倒它(就像我过去一周所做的那样),您可能会发现这个打字稿样板项目很有用:https://github.com/bitjson/typescript-starter –

回答

0

我建议你做你自己的声明文件:(例如globals.d.ts

declare module 'mysql-metadata-mapper' { 
    import * as mapper from './MysqlMapper'; 
    export = mapper; 
} 

那么你可以参考例如本声明文件 /// <reference path="../globals.d.ts" />

并导入模块,只要你喜欢用:

import * as Mapper from 'mysql-metadata-mapper'

我不是100%肯定,如果这是干净的解决方案,但至少应该像你想要它。

+0

首先感谢您的回答,但您的建议有一些问题,首先 - 不允许使用metadata-mapper,没有问题我更改了名称。 但是现在我在导入语句中出现错误: 环境模块声明中的导入或导出声明无法通过相关模块名称引用模块。 – Ced

+0

我看到了 - 我没有用虚线测试它的名字。你是否尝试导入没有'./'? – FlorianTopf

+0

是的,我做了,但模块没有找到这种方式 – Ced