Typescript 使用命名变量A创建类A的对象时出错

Typescript 使用命名变量A创建类A的对象时出错,typescript,Typescript,我有课下作业 export class TechnicalContactInfo { constructor(){ this.Communication = []; } /** @description ContactFunctionCode */PER01; /** @description ContactName */PER02; /** @description Communication */Communication: Communication[]; }

我有课下作业

export class TechnicalContactInfo {
    constructor(){
       this.Communication = [];
    }
/** @description ContactFunctionCode */PER01;
/** @description ContactName */PER02;
/** @description Communication */Communication: Communication[];
}
当我试图创建它的对象时,如下所示

var TechnicalContactInfo:TechnicalContactInfo = new TechnicalContactInfo();
它给我的错误如下

[ts]无法将“new”与类型缺少调用或 构造签名


有人能帮我找出原因吗?

这个错误是因为您将变量命名为与类相同的名称。如果我们看一看类是如何向下编译到
ES5
,那么类声明和变量声明导致冲突的原因可能会更明显一些:

var TechnicalContactInfo = /** @class */ (function () {
    function TechnicalContactInfo() {
    }
    return TechnicalContactInfo;
}());
var TechnicalContactInfo = new TechnicalContactInfo();

无法定义
TechnicalContactInfo
,因为已经有一个名为
TechnicalContactInfo
的变量保存类构造函数。对于ES6,我们可以使用相同的类语法,变量和类共享当前的命名范围,如果使用相同的名称定义变量和类,则会遇到问题。

变量名称与类名相同。改变它,我希望它会起作用。是的,它现在起作用了。。谢谢我可以知道为什么会这样吗?答案有点长,所以我把它作为一个答案贴了出来