我应该怎么做来创建自己的分型DefinitelyTyped具有默认为

问题描述:

我要创造我自己的分型DefinitelyTyped的排名项目(https://github.com/maxcnunes/ranking我应该怎么做来创建自己的分型DefinitelyTyped具有默认为

我已经尝试以下一些实施...

declare module 'ranking' { 
    interface RankingPlayer { 
    position: number 
    score: number 
    playerId: any 
    } 

    interface Ranking { 
    maxScore: number 
    branchFactor: number 
    players: any 
    find(query); 
    findOne(query); 
    setScore(player: RankingPlayer); 
    addPlayerPoints(player: RankingPlayer); 
    } 

    interface RankingStatic { 
    (config: any): Ranking; 
    } 

    var ranking: RankingStatic; 

    export = ranking; 
} 

当我试着使用代码

import Ranking from 'ranking' 
... 
console.log(Ranking) // This out '[Function: Ranking]' 
const ranking = new Ranking({}) // This Error 'Cannot call a class as a function' 

所以我用以下代码再试一次......

declare module 'ranking' { 
    interface RankingPlayer { 
    position: number 
    score: number 
    playerId: any 
    } 

    export default class Ranking { 
    maxScore: number 
    branchFactor: number 
    players: any 
    constructor(config: any) 
    find(query) 
    findOne(query) 
    setScore(player: RankingPlayer) 
    addPlayerPoints(player: RankingPlayer) 
    } 
} 

,及代码

import Ranking from 'ranking' 
... 
console.log(Ranking) // This out 'undefined' 
const ranking = new Ranking({}) // This Error 'ranking_1.default is not a constructor' 

不知道什么应该做,以实现这个:(

+0

我认为这不是你的打字问题,而不是你的构建过程。你能补充一点吗? –

+0

@SebastianSebald我不知道什么是构建过程? –

+0

由于您必须将您的TypeScript代码转换为JavaScript,我想您有某种过程可以实现这一点。或者是IDE中显示的错误? –

好像Ranking是一类,所以我也把它定义为这样的尝试:

定制分型/ ranking.d.ts

declare module 'ranking' { 
    class Ranking { 
    constructor(options?: {}) 
    } 
    export = Ranking 
} 

然后,你可以这样调用它:

app.ts

import Ranking = require('ranking'); 
const ranking = new Ranking({ 
    maxScore: 1000000, 
    branchFactor: 1000 
}); 

注意使用import Ranking = require('ranking')代替import Ranking from 'ranking'。关于差异的全面讨论,我可以参考this github issue

另外我回答了very similar question,你可能想看看。

+0

好的,这是工作,谢谢你;) –