【问题标题】:How should I do to create my own Typings DefinitelyTyped which have default as class我应该怎么做才能创建自己的 TypingsdefiniteTyped 其默认为类
【发布时间】:2016-12-31 13:54:38
【问题描述】:

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

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

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'

不知道应该怎么做:(

【问题讨论】:

  • 我认为这不是您的打字问题,而不是您的构建过程。可以补充一下吗?
  • @SebastianSebald 我不知道什么是构建过程?
  • 既然你必须将你的 TypeScript 代码转换成 JavaScript,我猜你有某种过程可以做到这一点。还是您的 IDE 中显示的错误?

标签: typescript ranking typing


【解决方案1】:

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

custom-typings/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,你可能想看看。

【讨论】:

    猜你喜欢
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2021-03-30
    • 1970-01-01
    相关资源
    最近更新 更多