簡體   English   中英

我應該在 es6 中新建一個 utils 類嗎?

[英]Should I new a utils class in es6?

我已經聲明了一個類,例如:

export default class Utils {
    static deepClone(): object {
        return {}
    }
}

所以當我想使用 deepClone 時,我可以:

// First One
import Utils from './Utils';
export default class Element {
    constructor(){
        this.utils = new Utils()
    }
    create(){
        return this.utils.deepClone()
    }
}

或者:

// Second One
import Utils from './Utils';
export default class Element {
    constructor(){
        this.utils = Utils
        // this is an optional
        // in my child class I need't to import Utils
        // I can use this.utils.deepClone() directly
    }
    create(){
        return Utils.deepClone()
    }
}

我想知道哪種更好的方式來暗示 Element 類

期待你的回復,我對你感激不盡

第二種方法更正確,但它有一個問題,您應該創建一個Utils類的實例來使用每個不是靜態方法的屬性。

您沒有創建實例的類的輸出是一個函數而不是原型對象。

./Utils.js

export default class Utils {
    static deepClone(): object {
        return {}
    }

   public deepExtend() {
     // deepClone code
   }
}

在另一個文件中使用:

import Utils from './Utils';

export default class Element {
    constructor(){
        this.utils = new Utils();
    }
    create(){
        return Utils.deepClone()
    }
    extend(){
        return this.utils.deepExtend()
    }
}

我將返回Utils export new ,並將它作為實例傳遞到您的Element的構造函數中,例如:

IUtils = someInterface;
export default class Element {
  constructor(utils: IUtils){
    this.utils = utils;
  }
  create(){
    return this.utils.deepClone()
  }
}

通過這些方式:

  1. 不創建新實例
  2. 使用可以傳遞給Element類的其他instances
  3. 可測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM