首页 > 解决方案 > 如何为带有可选参数的函数编写类型定义?

问题描述

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

找不到模块“github-slugger”的声明文件。'/Users/sunknudsen/Sites/sunknudsen/sunknudsen-website/node_modules/github-slugger/index.js' 隐含了一个 'any' 类型。尝试npm install @types/github-slugger是否存在或添加包含declare module 'github-slugger'; TS7016的新声明 (.d.ts) 文件

我只需要覆盖该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

解决方案


你应该使用这个:

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

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

有关详细信息,请参阅有关可选参数和默认参数的文档


推荐阅读