我的数据包含以各种格式提供的日期,其中很多都不能被Typescript识别。我创建了一个" safeDateParse"提供扩展转换并重载Date.parse()方法的函数。
const lastUsedDate = new Date(Date.parse(lastUsed));
当我使用以下语法创建Date对象时,这是有效的。
let newDate = new Date(dateString);
我还想重载构造函数以使用以下语法。
function Date(dateAsString: string): Date {
return safeDateParse(dateAsString);
}
到目前为止我的最大努力
.backgroundImage{
background: url("img/background4.png") ;
min-height: 100%;
width: 100%;
position: fixed;
top:0;
left: 0;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
这不起作用。它取代了Date类,而不是扩展它。我觉得应该有某种形式的"超级"或者"父母"在其中调用提供Date对象的其余部分。
是否可以覆盖构造函数,如果是,那么语法是什么?
答案 0 :(得分:0)
我认为你可以用通常的方式覆盖Date构造函数:
window.Date = function (orig) {
return function (...params) {
// Do some custom stuff here
return new orig(...params)
}
}(Date)
答案 1 :(得分:0)
使用此代码作为起点:
Date.parse = function parse(dateAsString: string) {
console.log('Overrided parse :)');
return safeDateParse(dateAsString).valueOf();
};
class MyDate extends Date {
constructor(dateAsString: string) {
console.log('extended Date');
const d = Date.parse(dateAsString);
super(d);
}
}
window['Date'] = MyDate;
new Date();
// logs :
// extended Date
// Overrided parse :)
答案 2 :(得分:0)
为了记录,我从未成功重载构造函数。我发现该参数使用DateConstructor来处理各种过载。如果可能,我的解决方案必须处理这些重载。最后,我不情愿地选择了下面的解决方案,并且必须教育其他程序员使用我的Utility.safeDate()而不是新的Date()
public static safeDate(dateAsString: string): Date {
return new Date(safeDateParse(dateAsString));
}
和示例电话。
const dateObject = Utility.safeDate('șapte mai 1983')