fix: Flag 系统语义问题

This commit is contained in:
AncTe committed 2026-09-17 19:01:46 +08:00
1 parent b7478cc77b
commit 219ac4991d
5 files changed
+9 -17

No files matched your search

@@ -67,7 +67,7 @@ describe('FlagSystem save and load round trips', () => {
// 验证 loadState 在同实例上原地恢复字段值(#06-17-5)
it('keeps field objects on loadState', () => {
const system = new FlagSystem();
const before = system.insertField('score', 7);
const before = system.setField('score', 7);
const saved = system.saveState();
system.loadState(saved);
@@ -48,7 +48,7 @@ beforeAll(async () => {
/** 创建一个 Flag 系统及其中一个已插入字段,便于直接操作字段对象 */
function createField<T>(key: PropertyKey, value: T) {
const system = new modules.FlagSystem();
return { system, field: system.insertField(key, value) };
return { system, field: system.setField(key, value) };
}
describe('FlagSystem field container', () => {
@@ -57,7 +57,7 @@ describe('FlagSystem field container', () => {
const system = new modules.FlagSystem();
expect(system.occupied('score')).toBe(false);
system.insertField('score', 1);
system.setField('score', 1);
expect(system.occupied('score')).toBe(true);
});
@@ -108,7 +108,7 @@ describe('FlagSystem field container', () => {
// 验证 deleteField 移除字段并恢复未占用状态
it('deletes a field', () => {
const system = new modules.FlagSystem();
system.insertField('temp', 1);
system.setField('temp', 1);
system.deleteField('temp');
+1 -1
View File
@@ -9,7 +9,7 @@ export class FlagSystem implements IFlagSystem {
return this.fieldMap.has(field);
}
insertField<T>(field: PropertyKey, value: T): IFlagCommonField<T> {
setField<T>(field: PropertyKey, value: T): IFlagCommonField<T> {
return this.getOrInsert(field, value);
}
+3 -12
View File
@@ -1,6 +1,6 @@
//#region 字段
import { ISaveableContent } from '@user/data-common';
import { ISaveableContent, SaveCompression } from '@user/data-common';
//#region 字段
export interface IFlagCommonField<T> {
/** 此字段所处的 Flag 系统 */
@@ -56,7 +56,7 @@ export interface IFlagSystem extends ISaveableContent<IFlagSystemSave> {
* @param field 字段名称
* @param value 字段值
*/
insertField<T>(field: PropertyKey, value: T): IFlagCommonField<T>;
setField<T>(field: PropertyKey, value: T): IFlagCommonField<T>;
/**
* 获取指定字段对象
@@ -133,15 +133,6 @@ export interface IFlagSystem extends ISaveableContent<IFlagSystemSave> {
* @param defaultValue 字段默认值
*/
getFieldValueDefaults<T>(field: PropertyKey, defaultValue: T): T;
/**
* 读取 Flag 系统存档。存档中已存在的字段会复用原实例并在其实例上原地写值,
* 因此外部通过 {@link getField} / {@link getOrInsert} 持有的字段引用跨读档仍然有效;
* 存档中不存在的字段一律删除,即读档结果以存档为准。
* @param state Flag 系统存档
* @param compression 压缩级别
*/
loadState(state: IFlagSystemSave, compression: SaveCompression): void;
}
//#endregion