Javascript 财产';getWeek';不存在于类型';日期';打字
我试图从给定的日期范围计算一周的开始日期和结束日期 下面的代码给出了此错误Javascript 财产';getWeek';不存在于类型';日期';打字,javascript,typescript,Javascript,Typescript,我试图从给定的日期范围计算一周的开始日期和结束日期 下面的代码给出了此错误[ts]属性“getWeek”在类型“Date”上不存在。 您需要使用接口合并在Date接口上声明方法 declare global { interface Date { getWeek (start?: number) : [Date, Date] } } Date.prototype.getWeek = function(start) { start = start || 0;
[ts]属性“getWeek”在类型“Date”上不存在。
您需要使用接口合并在
Date
接口上声明方法
declare global {
interface Date {
getWeek (start?: number) : [Date, Date]
}
}
Date.prototype.getWeek = function(start)
{
start = start || 0;
var today = new Date(this.setHours(0, 0, 0, 0));
var day = today.getDay() - start;
var date = today.getDate() - day;
var StartDate = new Date(today.setDate(date));
var EndDate = new Date(today.setDate(date + 6));
return [StartDate, EndDate];
}
var Dates = new Date().getWeek();
或者,如果您没有使用模块:
interface Date {
getWeek (start?: number) : [Date, Date]
}
这是因为typescript处理扩展的方式。您可以通过如下方式修改
Date
的界面来解决问题:
interface Date {
getWeek(start): Array<Date>;
}
Date
被TypeScript声明为已知接口getWeek
不是Date
a的属性,因此它不允许您获取或修改它
您必须增加日期
界面:
添加一个新的global.d.ts
文件。其中:
interface Date {
getWeek: (start: number | undefined) => [Date, Date];
}
然后,TypeScript将混合这两种声明,因此它将识别
getWeek
的存在,您可以在代码中定义它(另一个文件,因为声明文件不能包含语句)我在JSFIDLE中尝试过它,它可以工作?TypeScript对所有基本对象都有定义。所以,当您向prototype添加属性时,您还需要更新它的index.d.ts文件,它也可以在控制台中为我工作。(铬)
Date.prototype.getWeek = function(start)
{
start = start || 0;
var today = new Date(this.setHours(0, 0, 0, 0));
var day = today.getDay() - start;
var date = today.getDate() - day;
var StartDate = new Date(today.setDate(date));
var EndDate = new Date(today.setDate(date + 6));
return [StartDate, EndDate];
}
var Dates = new Date().getWeek();
interface Date {
getWeek: (start: number | undefined) => [Date, Date];
}