Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Javascript 干字脚本。我如何使用DRY原理来避免这两种吸气剂的重复_Javascript_Typescript_Dry_Getter_Typescript2.0 - Fatal编程技术网

Javascript 干字脚本。我如何使用DRY原理来避免这两种吸气剂的重复

Javascript 干字脚本。我如何使用DRY原理来避免这两种吸气剂的重复,javascript,typescript,dry,getter,typescript2.0,Javascript,Typescript,Dry,Getter,Typescript2.0,我知道下面两个getter是重复的,可以用更好的方式合并和编写。有谁能帮我想出一个方法来巩固这些:- isEqual这里有一个用于比较两个对象的lodash库。 这里的状态是我从中拾取对象的注入状态 public get isUpperModified(): boolean { if (!this.isUpperAvailable) { return false; } if ( (this.orders

我知道下面两个getter是重复的,可以用更好的方式合并和编写。有谁能帮我想出一个方法来巩固这些:-

isEqual这里有一个用于比较两个对象的lodash库。 这里的状态是我从中拾取对象的注入状态

   public get isUpperModified(): boolean {
        if (!this.isUpperAvailable) {
          return false;
        }
        if (
          (this.orders.upperPreference.type === '1' &&
            this.state.fetchedData.upperPreference.type === '1') ||
          (this.orders.upperPreference.type === 'UPPER' &&
            this.state.fetchedData.upperPreference.type === 'UPPER')
        ) {
          return false;
        }
        if (!isEqual(this.orders.upperPreference, this.state.fetchedData.upperPreference)) {
          return true;
        }
        return false;
      }




public get isLowerModified(): boolean {
        if (!this.isLowerAvailable) {
          return false;
        }
        if (
          (this.orders.lowerPreference.type === '1' &&
            this.state.fetchedData.lowerPreference.type === '1') ||
          (this.orders.lowerPreference.type === 'LOWER' &&
            this.state.fetchedData.lowerPreference.type === 'LOWER')
        ) {
          return false;
        }
        if (!isEqual(this.orders.lowerPreference, this.state.fetchedData.lowerPreference)) {
          return true;
        }
        return false;
      }

实现这一点的方法不止一种

您可以创建一个新函数
isModified(type:string)
,并将
upper
lower
作为参数传递

希望这有帮助

public get isUpperModified(): boolean {
    return this.isModified('upper');
}


public get isLowerModified(): boolean {
    return this.isModified('lower');
}

private isModified(type: 'lower' | 'upper'): boolean {

    const available = type === 'lower' ? this.isLowerAvailable : this.isUpperAvailable;
    const order = type === 'lower' ? this.orders.lowerPreference : this.orders.upperPreference;
    const state = type === 'lower' ? this.state.fetchedData.lowerPreference : this.state.fetchedData.upperPreference;

    if (!available) {
       return false;
    }

    if (
        (order.type === '1' &&
            state.type === '1') ||
        (order.type === type.toUpperCase() &&
            state.type === type.toUpperCase())
    ) {
        return false;
    }
    if (!isEqual(order, state)) {
        return true;
    }
    return false;
}

实现这一点的方法不止一种

您可以创建一个新函数
isModified(type:string)
,并将
upper
lower
作为参数传递

希望这有帮助

public get isUpperModified(): boolean {
    return this.isModified('upper');
}


public get isLowerModified(): boolean {
    return this.isModified('lower');
}

private isModified(type: 'lower' | 'upper'): boolean {

    const available = type === 'lower' ? this.isLowerAvailable : this.isUpperAvailable;
    const order = type === 'lower' ? this.orders.lowerPreference : this.orders.upperPreference;
    const state = type === 'lower' ? this.state.fetchedData.lowerPreference : this.state.fetchedData.upperPreference;

    if (!available) {
       return false;
    }

    if (
        (order.type === '1' &&
            state.type === '1') ||
        (order.type === type.toUpperCase() &&
            state.type === type.toUpperCase())
    ) {
        return false;
    }
    if (!isEqual(order, state)) {
        return true;
    }
    return false;
}

我会这样做

public get isModified(type: 'lower' | 'upper'): boolean {
        const isAvailable = type === "lower" ? this.isLowerAvailable : this.isUpperAvailable
        const preference = type === "lower" ? "lowerPreference" : "upperPreference";
        if (!isAvailable) {
          return false;
        }
        if (
          (this.orders[preference].type === '1' &&
            this.state.fetchedData[preference].type === '1') ||
          (this.orders[preference].type === 'LOWER' &&
            this.state.fetchedData[preference].type === 'LOWER')
        ) {
          return false;
        }
        if (!isEqual(this.orders[preference], this.state.fetchedData[preference])) {
          return true;
        }
        return false;
      }
那么调用这个方法的时候

使用
isModified(“upper”)
代替
isUpperModified


使用
isModified(“lower”)
而不是
isLowerModified
我会这样做

public get isModified(type: 'lower' | 'upper'): boolean {
        const isAvailable = type === "lower" ? this.isLowerAvailable : this.isUpperAvailable
        const preference = type === "lower" ? "lowerPreference" : "upperPreference";
        if (!isAvailable) {
          return false;
        }
        if (
          (this.orders[preference].type === '1' &&
            this.state.fetchedData[preference].type === '1') ||
          (this.orders[preference].type === 'LOWER' &&
            this.state.fetchedData[preference].type === 'LOWER')
        ) {
          return false;
        }
        if (!isEqual(this.orders[preference], this.state.fetchedData[preference])) {
          return true;
        }
        return false;
      }
那么调用这个方法的时候

使用
isModified(“upper”)
代替
isUpperModified


使用
isModified(“lower”)
而不是
isLowerModified

是否可以同时显示对这些方法的调用?是否可以同时显示对这些方法的调用?感谢您的回复。你是说“私人修改”而不是私人“得到”修改吗。因为getter不能接受参数。啊,很抱歉:)不应该有
get
。感谢您的回复。你是说“私人修改”而不是私人“得到”修改吗。因为getter不能接受参数。啊,对不起:)不应该有
get