使用类中的构造函数的Typescript将不允许使用new关键字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用类中的构造函数的Typescript将不允许使用new关键字相关的知识,希望对你有一定的参考价值。
我希望能够新建我的菜单类,但是在使用构造函数时我不能,这是为什么?
model = new Menu();
这样我就可以设置每个属性了
this.model.AppGroupID = UserID;
零件:
import { Menu } from '../../models/menu-model';
model = new Menu();
let UserID = params['UserID'];
this.model.AppGroupID = UserID;
不使用构造函数时,ABOVE工作正常
menu-model.ts文件
export class Menu {
UserID: number;
AppID: number;
NavAppID: number;
AppGroupID: number;
SelectedCaseID: number;
SelectedRoleID: number;
}
所以上面工作正常,但为什么以及如何使用构造函数呢?任何好处?
export class Menu {
constructor(
public UserID: number,
public AppID: number,
public NavAppID: number,
public AppGroupID: number,
public SelectedCaseID: number,
public SelectedRoleID: number
) { }
}
答案
我认为你会混淆几个不同的概念。
这个:
export class Menu {
UserID: number;
AppID: number;
NavAppID: number;
AppGroupID: number;
SelectedCaseID: number;
SelectedRoleID: number;
}
与此基本相同:
export class Menu {
constructor(
) { }
UserID: number;
AppID: number;
NavAppID: number;
AppGroupID: number;
SelectedCaseID: number;
SelectedRoleID: number;
}
即如果你没有指定一个构造函数,它基本上与一个空构造函数相同(我基本上说,如果你扩展一个基类,它会略有不同)。
不过这个:
export class Menu {
constructor(
public UserID: number,
public AppID: number,
public NavAppID: number,
public AppGroupID: number,
public SelectedCaseID: number,
public SelectedRoleID: number
) { }
}
是不同的。如果使用参数定义构造函数,则需要在调用构造函数时为这些参数提供参数。
因为您将构造函数参数声明为“public”,这也使它们成为类的属性。
这可能是令人困惑的?您不需要在构造函数中创建这些属性,这只是一种方便的简写。
如果不想在构造函数调用中指定参数,请不要将它们作为构造函数的参数,而是在第一个示例中直接在类体中声明它们。
以上是关于使用类中的构造函数的Typescript将不允许使用new关键字的主要内容,如果未能解决你的问题,请参考以下文章