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);
}
}
可以有具体实现的方法,但包含
abstract
关键字的抽象方法不能有具体实现