typescript - 如何为带有可选参数的函数编写类型定义?
问题描述
尝试为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
}
这是处理可选参数的正确方法吗?
解决方案
你应该使用这个:
declare module "github-slugger" {
function slug(string: string, maintainCase?: boolean): string
}
请注意,function slug(string, boolean): string
与 相同function slug(string: any, boolean: any): string
。在 Typescript 中,需要指定参数名称。
有关详细信息,请参阅有关可选参数和默认参数的文档。
推荐阅读
- sql-server - 如何在 SSRS 堆积图数据标签中隐藏零值
- selenium-webdriver - 网页中的字段在自动化过程中表现不同。可能吗?
- javascript - webpack 4 - 用于多个条目的拆分块插件
- jquery - jQuery-ui selectable 在 bootstrap 3 模式下无法正常工作
- vim - Vim:当命令栏展开时停止文本向上滚动
- python - 如何对 QTableWidget 列值进行排序?
- php - 解决 URL 注入
- node.js - 如何使用环回包含关系过滤数据?
- python - 使用 Python 从互联网上获取与给定关键字相关的所有 url
- unity3d - ElectronJS 中的 Unity 游戏?