我应该怎么做来创建自己的分型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'
不知道什么应该做,以实现这个:(
答
好像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
好的,这是工作,谢谢你;) –
我认为这不是你的打字问题,而不是你的构建过程。你能补充一点吗? –
@SebastianSebald我不知道什么是构建过程? –
由于您必须将您的TypeScript代码转换为JavaScript,我想您有某种过程可以实现这一点。或者是IDE中显示的错误? –