Typescript 无法使用';新';其类型缺少调用或构造签名的表达式-但已定义

Typescript 无法使用';新';其类型缺少调用或构造签名的表达式-但已定义,typescript,Typescript,我对接口定义中的“新”构造函数有问题: interface DateOnlyStatic { new: (y: number, m: number, d: number) => DateOnly; today: () => DateOnly; fromDate(d: DateOnly): DateOnly; fromISOString(s: string): DateOnly; fromBaseDateTime(a: any): any;

我对接口定义中的“新”构造函数有问题:

interface DateOnlyStatic {
    new: (y: number, m: number, d: number) => DateOnly;
    today: () => DateOnly;
    fromDate(d: DateOnly): DateOnly;
    fromISOString(s: string): DateOnly;
    fromBaseDateTime(a: any): any;
    areEqual(d1: DateOnly, d2: DateOnly): boolean;
    comparer(d1: DateOnly, d2: DateOnly): boolean;
}


interface DateOnly extends Date {
    monday: () => DateOnly;
    addDays: (i: number) => DateOnly;
    addMonths: (i: number) => DateOnly;
    getTotalDays: () => number;

}

declare var DateOnly: DateOnlyStatic;


declare var g = new DateOnly(2001, 1, 1);

在最后一行中,编译器抱怨
无法将“new”与类型缺少调用或构造签名的表达式一起使用。为什么?我不是在第2行明确声明了吗?

构造函数签名的定义是错误的,您定义了一个名为new的字段,它是一个函数。以下是构造函数签名的外观:

interface DateOnlyStatic {
    new (y: number, m: number, d: number) : DateOnly;
}

构造函数签名的定义是错误的,您定义了一个名为new的字段,它是一个函数。以下是构造函数签名的外观:

interface DateOnlyStatic {
    new (y: number, m: number, d: number) : DateOnly;
}

但是我如何定义构造函数呢
var DateOnly=函数(年、月、日){返回新日期(年、月、日)}
doesnotwork@Ferenjito为什么不直接从
Date
派生,因为这似乎是您想要的呢?我在这里使用的是遗留代码,我不应该更改,另外,我想了解这里的一般方法。构造函数应该是这样的:
var DateOnly=function(year,month,day){doSomething()}
但是我如何定义构造函数呢
var DateOnly=函数(年、月、日){返回新日期(年、月、日)}
doesnotwork@Ferenjito为什么不直接从
Date
派生,因为这似乎是您想要的呢?我在这里使用的是遗留代码,我不应该更改,另外,我想了解这里的一般方法。构造函数应该是这样的:
var DateOnly=function(year,month,day){doSomething()}