Javascript 如何在typescript中使用抽象类

Javascript 如何在typescript中使用抽象类,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我正在尝试(以简化的方式)将以下示例移植到typescript,因为我想演示typescript中的抽象工厂模式 到目前为止,我创建的代码如下(仅限结构) 当前,您的代码需要实例化DAOFactory才能访问getDAOFactory方法: const daoFactory = new DAOFactory; 但是,您不能这样做,因为DAOFactory是抽象的 相反,工厂函数不需要是对象方法——它可以是类方法(静态),甚至只是函数 const getDAOFactory = (whichF

我正在尝试(以简化的方式)将以下示例移植到typescript,因为我想演示typescript中的抽象工厂模式

到目前为止,我创建的代码如下(仅限结构)


当前,您的代码需要实例化
DAOFactory
才能访问
getDAOFactory
方法:

const daoFactory = new DAOFactory;
但是,您不能这样做,因为
DAOFactory
是抽象的

相反,工厂函数不需要是对象方法——它可以是类方法(静态),甚至只是函数

const getDAOFactory = (whichFactory: number): DAOFactory => {
  switch (whichFactory) {
    case 1: 
        return new SharepointListDAOFactory();
    case 2: 
        return new JsonDAOFactory();      
    default  : 
        return null;
  }
}
现在您只需调用
OracleDbFactory=getDAOFactory(DAOFactory.DAOORACLEDB)(类型由函数的返回类型隐式表示)


我确实想知道为什么你需要这个额外的抽象层。看起来像是
custDao=getDao(DaoTypes.Customer)
就足够了。

像是
getDAOFactory
应该是
static
。请作为答案发布。这就是问题所在,
DAOFactory OracleDbFactory =   
  DAOFactory.getDAOFactory(DAOFactory.DAOORACLEDB); 

// Create a DAO
CustomerDAO custDAO = 
  OracleDbFactory.getCustomerDAO();
const daoFactory = new DAOFactory;
const getDAOFactory = (whichFactory: number): DAOFactory => {
  switch (whichFactory) {
    case 1: 
        return new SharepointListDAOFactory();
    case 2: 
        return new JsonDAOFactory();      
    default  : 
        return null;
  }
}