【问题标题】:How to write type definitions for function with optional argument?如何为带有可选参数的函数编写类型定义?
【发布时间】:2020-03-08 12:10:15
【问题描述】:

尝试为github-slugger 编写类型定义以修复以下错误。

找不到模块“github-slugger”的声明文件。 '/Users/sunknudsen/Sites/sunknudsen/sunknudsen-website/node_modules/github-slugger/index.js' 隐含地具有“任何”类型。尝试npm install @types/github-slugger(如果存在)或添加新声明 (.d.ts) 包含declare module 'github-slugger';TS7016的文件

我只需要覆盖slug函数。

/**
 * Generate a unique slug.
 * @param  {string} value String of text to slugify
 * @param  {boolean} [false] Keep the current case, otherwise make all lowercase
 * @return {string}       A unique slug string
 */
BananaSlug.prototype.slug = function (value, maintainCase) {
  var self = this
  var slug = slugger(value, maintainCase === true)
  var originalSlug = slug

  while (own.call(self.occurrences, slug)) {
    self.occurrences[originalSlug]++
    slug = originalSlug + '-' + self.occurrences[originalSlug]
  }

  self.occurrences[slug] = 0

  return slug
}

这是我目前所拥有的(有效)。

declare module "github-slugger" {
  export function slug(string): string
  export function slug(string, boolean): string
}

这是处理可选参数的正确方法吗?

【问题讨论】:

标签: typescript


【解决方案1】:

你应该使用这个:

declare module "github-slugger" {
  function slug(string: string, maintainCase?: boolean): string
}

请注意,function slug(string, boolean): stringfunction slug(string: any, boolean: any): string 相同。在 Typescript 中,需要指定参数名称。

欲了解更多信息,请参阅the documentation on optional and default parameters

【讨论】:

  • 谢谢樱花。没有意识到在d.ts 中编写类型定义与在ts 文件中编写类型定义本质上是相同的。仅供参考,提交了修改以修复 ? 的拼写错误。
猜你喜欢
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 2021-04-19
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2017-07-30
相关资源
最近更新 更多