因此,在我的项目中,我使用的是dayjs-recur插件dayjs,但是tsc抱怨它找不到类型声明。因此,我在dayjs-recur.d.ts中使用以下代码解决了这个问题
declare module 'dayjs-recur' {
import { PluginFunc } from 'dayjs';
const defaultExport: PluginFunc<unknown>;
export = defaultExport;
}虽然这还不足以满足LSP,但我还必须扩展dayjs命名空间。通过查找打字本文件,我得到了以下片段:
declare module 'dayjs-recur' {
import { Dayjs, PluginFunc } from 'dayjs';
interface RecurPlugin {
every(...args: any): RecurPlugin;
daysOfMonth(): RecurPlugin;
fromDate(date: any): RecurPlugin;
next(any: any): Dayjs;
all(): Dayjs[];
}
const defaultExport: PluginFunc<unknown>;
export = defaultExport;
namespace dayjs {
export function recur(...args: any): RecurPlugin;
}
}但它似乎什么也没做。有什么建议吗?
发布于 2022-09-18 05:38:47
以下是我最后想出的:
declare module 'dayjs-recur' {
interface DayjsRecur {
...
}
declare module 'dayjs' { // <--- HERE is what I was doing wrong
export function recur(...args: any): DayjsRecur;
}
const defaultExport: PluginFunc<unknown>;
export = defaultExport;
}这是我的最后类型声明,供将来参考:
// dayjs-recur.d.ts
declare module 'dayjs-recur' {
import { Dayjs, PluginFunc } from 'dayjs';
interface Recurrence {
every(unit: number | string, measurementType?: string): Recurrence;
every(units: number[] | string[], measurementType?: string): Recurrence;
day(unit?: string): Recurrence;
days(unit?: string): Recurrence;
week(unit?: string): Recurrence;
weeks(unit?: string): Recurrence;
month(unit?: string): Recurrence;
months(unit?: string): Recurrence;
year(unit?: string): Recurrence;
years(unit?: string): Recurrence;
dayOfWeek(unit?: string): Recurrence;
daysOfWeek(unit?: string): Recurrence;
dayOfMonth(unit?: string): Recurrence;
daysOfMonth(unit?: string): Recurrence;
weekOfMonth(unit?: string): Recurrence;
weeksOfMonth(unit?: string): Recurrence;
weekOfYear(unit?: string): Recurrence;
weeksOfYear(unit?: string): Recurrence;
monthOfYear(unit?: string): Recurrence;
monthsOfYear(unit?: string): Recurrence;
forget(date: string): Recurrence;
except(date: string): Recurrence;
matches(date: string, outbound?: boolean): boolean;
fromDate(date: string | Dayjs): Recurrence;
next(count?: number): Dayjs | Dayjs[];
previous(count?: number): Dayjs | Dayjs[];
all(): Dayjs[];
}
declare module 'dayjs' {
export function recur(): Recurrence;
export function recur(
start?: string | Dayjs,
end?: string | Dayjs,
): Recurrence;
export function recur(options: {
start: string | Dayjs;
end: string | Dayjs;
}): Recurrence;
interface Dayjs {
recur(): Recurrence;
recur(start?: string | Dayjs, end?: string | Dayjs): Recurrence;
recur(options: {
start: string | Dayjs;
end: string | Dayjs;
}): Recurrence;
}
}
const defaultExport: PluginFunc<unknown>;
export = defaultExport;
}更新
现在可以使用以下命令安装类型定义:(感谢注释部分中的@leog )
$ npm i -D @types/dayjs-recurhttps://stackoverflow.com/questions/73712940
复制相似问题