2015-11-08 84 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