Skip to content

Commit 8ce2a7a

Browse files
committed
refactor(layers,core): genericize ILayer.getScale with IStyleScale default (stage-3 3.2)
3.2 收尾刀:把返回 `any` 的 `getScale` 收紧为泛型签名,默认 `IStyleScale`(该返回路径的实际语义结构:scale/field/type/option)。 - core `ILayer.getScale(name): any` → `getScale<T = IStyleScale>(name): T` (`ILayerService.ts`)。默认 IStyleScale 比严格 any 安全,调用方可 opt-in 泛型;底层 `getLayerAttributeScale` 仍 any(scaler 未具名, 归后续 scale service 专属刀),经 `as T` 透传不引入类型错误。 - layers `BaseLayer.getScale<T = IStyleScale>(name): T` → 委托 `scaleLegendManager.getScale<T>(name)`;`LayerScaleLegend.getScale` 同步、`getLayerAttributeScale(name) as T`。纯内部签名对齐。 运行时零行为变化,仅类型面收紧。验证:core+layers father build (98/278 files,d.ts 生成通过)、eslint/prettier 0 error、jest packages/layers packages/maps 0 failed(660 passed,1 skipped citybuilding 基线不变)。PLAN 3.2 标 ☑ 完成。
1 parent af62247 commit 8ce2a7a

6 files changed

Lines changed: 54 additions & 6 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
'@antv/l7-core': minor
3+
---
4+
5+
refactor(core): genericize ILayer.getScale with IStyleScale default (stage-3 3.2)
6+
7+
P4 阶段 3 第二刀收尾(3.2,core 侧,minor)。
8+
9+
`ILayer.getScale(name: string): any`
10+
`getScale<T = IStyleScale>(name: string): T``ILayerService.ts`)。
11+
默认 `IStyleScale` 为该返回路径的实际语义结构
12+
`scale`/`field`/`type`/`option`,见 `IStyleAttributeService`),
13+
`any` 严格且对未指定 `T` 的调用方保持类型安全;调用方可显式 opt-in
14+
泛型。底层 `styleAttributeService.getLayerAttributeScale(name)` 仍返
15+
`any`(scaler 结构未具名,归后续 scale service 专属刀),经 `as T`
16+
透传不引入类型错误。
17+
18+
运行时零行为变化,仅类型面收紧。配套 layers 侧实现同步见
19+
`refactor-layers-getscale-generic` changeset。
20+
21+
验证:core eslint 0 error、prettier 通过、core father build 98 files
22+
(d.ts 生成、类型检查通过)。
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
'@antv/l7-layers': patch
3+
---
4+
5+
refactor(layers): align getScale generic signature with ILayer (stage-3 3.2)
6+
7+
P4 阶段 3 第二刀收尾(3.2,layers 侧,patch)。
8+
9+
`BaseLayer.getScale``LayerScaleLegend.getScale` 同步加
10+
`<T = IStyleScale>` 泛型签名,对齐 `@antv/l7-core``ILayer.getScale`
11+
接口变更(见 `refactor-core-getscale-generic` changeset):
12+
13+
- `BaseLayer.getScale<T = IStyleScale>(name): T`
14+
`return this.scaleLegendManager.getScale<T>(name)`
15+
- `LayerScaleLegend.getScale<T = IStyleScale>(name): T`
16+
`return this.layer.styleAttributeService
17+
.getLayerAttributeScale(name) as T`
18+
19+
纯内部签名对齐,运行时零行为变化。
20+
21+
验证:layers eslint 0 error、prettier 通过、layers father build 278 files
22+
(d.ts 生成、类型检查通过)、jest packages/layers packages/maps
23+
0 failed(660 passed,1 skipped citybuilding 基线不变)。

docs/refactoring/layers/PLAN.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ citybuilding/ geometry/ — 12 个具体图层 extends BaseLayer(各自只 ove
9393
### 阶段 3 — 配置模型与类型强化
9494

9595
- 3.1 定义 `LayerConfigModel` 收敛三轨:`rawConfig`(入参快照)/ `needUpdateConfig`(diff 暂存)/ `getLayerConfig()``globalConfigService` 读回)→ 统一为 `LayerConfigModel.read()` 单一读路径 + `apply(patch)` 单一写路径,`prepareBuildModel` 消费 diff。`ILayer.getLayerConfig<T>()` 签名不变。
96-
- 3.2 给 `defaultSourceConfig/sourceOption/shapeOption/encodeStyleAttribute` 补严格类型(替 `any`):引入 `ILayerSourceOption/IShapeOption/IEncodedStyleMap``get(name)`/`getScale(name)` 标泛型或返回联合类型。 **(☑ 部分完成`defaultSourceConfig`/`sourceOption`/`shapeOption`/`get(name)` 历史已各自定型为 `IDefaultSourceConfig`/`ISourceOption`/`IShapeOption`/`number`,本刀补齐 `encodeStyleAttribute``IEncodedStyleMap`(core 新增 `IEncodedStyleValue`+`IEncodedStyleMap`);`getScale(name):any` 泛型化归后续 scale delegate 专属刀。)**
96+
- 3.2 给 `defaultSourceConfig/sourceOption/shapeOption/encodeStyleAttribute` 补严格类型(替 `any`):引入 `ILayerSourceOption/IShapeOption/IEncodedStyleMap``get(name)`/`getScale(name)` 标泛型或返回联合类型。 **(☑ 完成`defaultSourceConfig`/`sourceOption`/`shapeOption`/`get(name)` 历史已各自定型为 `IDefaultSourceConfig`/`ISourceOption`/`IShapeOption`/`number``encodeStyleAttribute``IEncodedStyleMap`(core 新增 `IEncodedStyleValue`+`IEncodedStyleMap`);`getScale(name):any``getScale<T = IStyleScale>(name): T`(core `ILayer` 接口 + layers `BaseLayer`/`LayerScaleLegend` 同步;默认 `IStyleScale` 语义收紧、运行时零变化、`getLayerAttributeScale` 底层 `any` 归后续 scale service 专属刀。)**
9797
- 3.3 `enableShaderEncodeStyles/enableDataEncodeStyles: string[]` → 收敛为 `encodeStyles: Map<string,'shader'|'data'>`(内部),公开数组 getter 保留过渡;补 spec 锁定编码开关行为。 **(☑ 已完成;BaseLayer 加 `encodeStyles:Map`+`EncodeStyleKind`(core)+`setEncodeStyles` helper+数组 getter;point/line/polygon 子类字段初始化器改 constructor 调 `setEncodeStyles``encodeStyle()` 读改 `Map.has`;新 `encode-styles.spec.ts` 7 cases 锁定;公开 `ILayer` 数组契约保留)**
9898

9999
### 阶段 4 — 渲染管线收敛

packages/core/src/services/layer/ILayerService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import type {
3939
IStyleAttribute,
4040
IStyleAttributeService,
4141
IStyleAttributeUpdateOptions,
42+
IStyleScale,
4243
ScaleTypeName,
4344
StyleAttrField,
4445
StyleAttributeField,
@@ -499,7 +500,7 @@ export interface ILayer {
499500
setLayerPickService(layerPickService: ILayerPickService): void;
500501
init(): Promise<void>;
501502
scale(field: string | number | IScaleOptions, cfg?: IScale): ILayer;
502-
getScale(name: string): any;
503+
getScale<T = IStyleScale>(name: string): T;
503504
size(field: StyleAttrField, value?: StyleAttributeOption): ILayer;
504505
color(field: StyleAttrField, value?: StyleAttributeOption): ILayer;
505506
rotate(field: StyleAttrField, value?: StyleAttributeOption): ILayer;

packages/layers/src/core/BaseLayer.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import type {
3232
ISourceOption,
3333
IStyleAttributeService,
3434
IStyleAttributeUpdateOptions,
35+
IStyleScale,
3536
ITextureService,
3637
L7Container,
3738
LayerEventType,
@@ -980,8 +981,8 @@ export default class BaseLayer<ChildLayerStyleOptions = {}>
980981
return this.encodedData;
981982
}
982983

983-
public getScale(name: string): any {
984-
return this.scaleLegendManager.getScale(name);
984+
public getScale<T = IStyleScale>(name: string): T {
985+
return this.scaleLegendManager.getScale<T>(name);
985986
}
986987

987988
public getLegend(name: string): ILegend {

packages/layers/src/core/LayerScaleLegend.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type {
44
ILegendSegmentItem,
55
IScale,
66
IScaleOptions,
7+
IStyleScale,
78
LegendItems,
89
} from '@antv/l7-core';
910
import { lodashUtil } from '@antv/l7-utils';
@@ -54,8 +55,8 @@ export default class LayerScaleLegend {
5455
return this.scaleOptions;
5556
}
5657

57-
public getScale(name: string): any {
58-
return this.layer.styleAttributeService.getLayerAttributeScale(name);
58+
public getScale<T = IStyleScale>(name: string): T {
59+
return this.layer.styleAttributeService.getLayerAttributeScale(name) as T;
5960
}
6061

6162
public getLegend(name: string): ILegend {

0 commit comments

Comments
 (0)