gpt4 book ai didi

typescript - 如何在 typescript 中使用静态方法扩展和键入导入的类

转载 作者:行者123 更新时间:2023-12-05 01:49:46 26 4
gpt4 key购买 nike

我正在尝试使用如下静态方法扩展 Luxon DateTime 类:

DateTime.fromDob = function(dob: number | string | DateTime) {
if (dob instanceof DateTime) {
return dob
}
if (dob && (typeof dob === 'number' || typeof dob === 'string')) {
return DateTime.fromFormat(String(dob), DOB)
}
return null
}

typescript 错误:属性“isInFuture”在类型“typeof DateTime”上不存在。ts(2339)

我已尝试将方法添加到我的 d.ts 文件中的模块声明中,但无济于事:

declare module 'luxon/src/datetime' {
export interface DateTime {
public static fromDob(dob: number | string | DateTime): DateTime | null
}
}

但这并不能解决错误。

最佳答案

我认为 typescript 接口(interface)中不允许使用 static 修饰符。

作为解决方法,您可以尝试使用 namespace

一个例子:

declare module 'luxon/src/datetime' {
namespace DateTime {
export function fromDob(dob: number | string | DateTime): DateTime | null;
}
}

DateTime.fromDob = function() {
console.log('fromDob');
};
DateTime.fromDob();

关于typescript - 如何在 typescript 中使用静态方法扩展和键入导入的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73723927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com