Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何将实例设置为null(在构造函数中)?_Node.js_Typescript - Fatal编程技术网

Node.js 如何将实例设置为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

我需要创建一个安全的构造函数,它只在值正确的情况下构建对象,因此我想在构造函数中返回null(而不是创建对象的实例),如何做到这一点

在我的类中,从构造函数返回的Aresta null不起作用

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.您可以
从构造函数抛出
错误,让它告诉创建对象的代码有问题;这不会阻止或取消创建对象;对象已创建但未完全初始化;创建对象的代码应处理错误。