TS中在抽象类中是否可以写一些已经实现的方法?

作者站长头像
站长
· 阅读数 5

TS中在抽象类中是否可以写一些已经实现的方法?

这个代码是一个抽象类BaseEdge,在里面有方法updateCache,这个是已经实现了的。也就是说抽象类中可以有已经实现好的方法是吗?

export abstract class BaseEdge {

  ...
  public updateCache(shapeMap) {
    ['labelShape', 'labelBackgroundShape'].forEach((id) => {
      const shape = shapeMap[id];
      if (shape?.getAttribute(LOCAL_BOUNDS_DIRTY_FLAG_KEY)) {
        this.boundsCache[`${id}Geometry`] = shape.getGeometryBounds();
        this.boundsCache[`${id}Transform`] = shape.style.transform;
        shape.setAttribute(LOCAL_BOUNDS_DIRTY_FLAG_KEY, false);
      }
    });

    const { levelShapes, zoom } = this.zoomCache;
    Object.keys(shapeMap).forEach((shapeId) => {
      const { lod } = shapeMap[shapeId].attributes;
      if (lod !== undefined) {
        levelShapes[lod] = levelShapes[lod] || [];
        levelShapes[lod].push(shapeId);
      }
    });

    const { maxWidth = '60%' } = this.mergedStyles.labelShape || {};
    this.zoomCache.wordWrapWidth = getWordWrapWidthByEnds(
      [this.sourcePoint, this.targetPoint],
      maxWidth,
      1,
    );

    this.zoomCache.zoom = 1;
    this.zoomCache.zoomLevel = 0;
    if (zoom !== 1) this.onZoom(shapeMap, zoom);
  }
}
回复
1个回答
avatar
test
2024-07-06

answer image可以有具体实现的方法,但包含abstract关键字的抽象方法不能有具体实现answer image

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容