代码之家  ›  专栏  ›  技术社区  ›  Coyolero

如何扩展javascript类

  •  -1
  • Coyolero  · 技术社区  · 6 年前

    我正在开发一个npm包,我想知道如何在typescript上划分一个大类的内容。

    使用vanilla js,我可以这样做:

    class MyBigClass {
      // content
    }
    
    MyBigClass.prototype.initDatabase = require('./init-database');
    MyBigClass.prototype.start = require('./start');
    MyBigClass.prototype.stop = require('./stop'); 
    

    所以,一个“大”类可以被划分成小块代码。

    我怎么还能用这个 private/public/protected 修改器?

    1 回复  |  直到 6 年前
        1
  •  2
  •   unional    6 年前

    你不应该因为一个大班太大而试图拆散它。

    你应该看看你的类的设计,找出为什么这个类很大。

    它承担多重责任吗? 它应该被重构成多个更小的类吗?

    考虑遵循一些设计原则,如实体。

    为了维护一个大类而将它分成多个文件会使维护变得更困难,而不是更容易。

        2
  •  1
  •   BlueWater86    6 年前

    你上面的例子错误地提到“require”是vanilla JS,这个语句是不正确的。

    我想你要找的是 Import/Export of Modules ;这是一个与 ECMAScript2015 .

    import { initDatabase } from './init-database';
    import { start} from './start';
    import { stop } from './stop';
    
    class MyBigClass {
      private initDatabase(arg1: string, arg2: number) {initDatabase(arg1, arg2)}
      start() {start()}
      protected stop () {stop ()}
    }
    
    class MyClassThatNowLooksLittleButHasBigFeatures extends MyBigClass {
    
    }