繁体   English   中英

如何为带有可选参数的函数编写类型定义?

[英]How to write type definitions for function with optional argument?

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

找不到模块“github-slugger”的声明文件。 '/Users/sunknudsen/Sites/sunknudsen/sunknudsen-website/node_modules/github-slugger/index.js' 隐含地具有 'any' 类型。 如果存在,请尝试npm install @types/github-slugger或添加包含declare module '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
}

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

你应该使用这个:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM