首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建自己的类型DefinitelyTyped,其中默认为类

如何创建自己的类型DefinitelyTyped,其中默认为类
EN

Stack Overflow用户
提问于 2016-08-24 12:18:50
回答 1查看 138关注 0票数 0

我想创建我自己的排版DefinitelyTyped来排名项目(https://github.com/maxcnunes/ranking)

我已经尝试了一些实现如下..。

代码语言:javascript
复制
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;
}

当我尝试使用代码时

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

所以我再用下面的密码..。

代码语言:javascript
复制
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)
  }
}

并尝试使用代码

代码语言:javascript
复制
import Ranking from 'ranking'
...
console.log(Ranking) // This out 'undefined'
const ranking = new Ranking({}) // This Error 'ranking_1.default is not a constructor'

不知道该怎么做才能实现这一点:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 13:35:07

Ranking似乎是一个类,所以我也将其定义为:

custom-typings/ranking.d.ts

代码语言:javascript
复制
declare module 'ranking' {
  class Ranking {
    constructor(options?: {})
  }
  export = Ranking
}

然后你就可以这样说:

app.ts

代码语言:javascript
复制
import Ranking = require('ranking');
const ranking = new Ranking({
  maxScore: 1000000,
  branchFactor: 1000
});

注意使用import Ranking = require('ranking')而不是import Ranking from 'ranking'。关于差异的完整讨论,我建议您参考这个github问题

另外,我回答了一个非常相似的问题,您可能想要退房。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39123151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档