Node.js 如何将实例设置为null(在构造函数中)?
我需要创建一个安全的构造函数,它只在值正确的情况下构建对象,因此我想在构造函数中返回null(而不是创建对象的实例),如何做到这一点 在我的类中,从构造函数返回的Aresta null不起作用Node.js 如何将实例设置为null(在构造函数中)?,node.js,typescript,Node.js,Typescript,我需要创建一个安全的构造函数,它只在值正确的情况下构建对象,因此我想在构造函数中返回null(而不是创建对象的实例),如何做到这一点 在我的类中,从构造函数返回的Aresta null不起作用 export class Aresta{ private feromonioAtual : number; private distancia : number; private noFim: No; constructor(noFim:No, distancia:num
export class Aresta{
private feromonioAtual : number;
private distancia : number;
private noFim: No;
constructor(noFim:No, distancia:number){
if(distancia<=0){
//null return isn't work :(
return null;
}
this.feromonioAtual = 1;
this.noFim = noFim;
this.distancia = distancia;
}
}
导出类Aresta{
私密性:数量;
私人距离:数字;
非官方非营利组织:否;
建造商(noFim:否,距离:编号){
如果(距离这种验证是在工厂的类外处理的
导出类Aresta{
私密性:数量;
私人距离:数字;
私有noFim:编号;
构造函数(noFim:编号,距离:编号){
这个。Feromoniatual=1;
this.noFim=noFim;
这个。距离=距离;
}
}
出口级工厂{
公共静态构建Aresta(noFim:编号,距离:编号):Aresta{
如果(距离这种验证是在工厂的类外处理的
导出类Aresta{
私密性:数量;
私人距离:数字;
私有noFim:编号;
构造函数(noFim:编号,距离:编号){
这个。Feromoniatual=1;
this.noFim=noFim;
这个。距离=距离;
}
}
出口级工厂{
公共静态构建Aresta(noFim:编号,距离:编号):Aresta{
if(distance a我将使用工厂方法,它允许您对其他代码隐藏构造函数。它可以返回null
或Aresta
的实例,并且可以包含检查构造值所需的任何验证
export class Aresta{
private feromonioAtual : number;
private distancia : number;
private noFim: No;
public static GetInstance(noFim: No, distancia: number) : Aresta | null {
if(distancia <= 0){
return null;
}
return new Aresta(noFim, distancia);
}
private constructor(noFim: No, distancia: number) {
this.feromonioAtual = 1;
this.noFim = noFim;
this.distancia = distancia;
}
}
为此,我将使用工厂方法,它允许您对其他代码隐藏构造函数。它可以返回null
或Aresta
的实例,并且可以包含检查构造值所需的任何验证
export class Aresta{
private feromonioAtual : number;
private distancia : number;
private noFim: No;
public static GetInstance(noFim: No, distancia: number) : Aresta | null {
if(distancia <= 0){
return null;
}
return new Aresta(noFim, distancia);
}
private constructor(noFim: No, distancia: number) {
this.feromonioAtual = 1;
this.noFim = noFim;
this.distancia = distancia;
}
}
您正在寻找的是工厂模式。您需要一个对象来创建Aresta的实例并检查所有数据是否都在那里。在您将返回null的位置抛出,并在类之外处理异常,即在您将实例化的位置。构造函数抛出的实例将保持未定义状态。1.构造函数不返回值(或者,更确切地说,它们返回的值被忽略)。2.调用构造函数时,对象已经创建,并且构造函数无法阻止创建;构造函数的作用是为工作准备对象(初始化它);3.您可以从构造函数抛出错误,让它告诉创建对象的代码有问题;这不会阻止或取消创建对象;对象已创建但未完全初始化;创建对象的代码应处理错误。您要查找的是工厂模式n、 你需要一个对象来创建Aresta的实例,并检查是否所有数据都在那里。在你将返回null的地方抛出,并在类之外处理异常,即在你将实例化的地方。构造函数抛出的实例将保持未定义。1.构造函数不返回值(或者更确切地说,它们返回的值将被忽略).2.调用构造函数时,对象已经创建,构造函数无法阻止创建;构造函数的作用是为对象的工作做好准备(初始化它);3.您可以从构造函数抛出错误,让它告诉创建对象的代码有问题;这不会阻止或取消创建对象;对象已创建但未完全初始化;创建对象的代码应处理错误。