ESEngine Version
v0.25.0
Component
SDK / Runtime
Description
官方文档“过滤与变更检测”说明可以使用:
Query(Added(HealthComponent));
Query(Changed(Transform));
但将该 Query 作为 defineSystem 的参数时,TypeScript 类型检查失败。
运行时 SDK 已导出 Added、Changed、AddedWrapper 与 ChangedWrapper,
因此这看起来是自动生成的 .d.ts 内部类型约束遗漏,而不是 API 不存在。
Steps to Reproduce
- 创建任意自定义组件。
- 编写以下 System:
import { Added, defineComponent, defineSystem, Query } from 'esengine';
const TestComponent = defineComponent('TestComponent', {
value: 0,
});
export const testSystem = defineSystem(
[Query(Added(TestComponent))],
(entities) => {
for (const [entity, component] of entities) {
console.log(entity, component.value);
}
},
);
3.执行 TypeScript 类型检查
Expected Behavior
Query(Added(TestComponent)) 和 Query(Changed(TestComponent))
应可直接作为 defineSystem 的依赖参数,且回调正确推断 Query 结果类型
Actual Behavior
Type 'QueryBuilder<[AddedWrapper<...>]>' is not assignable to type 'SystemParam'
Operating System
No response
Browser (if applicable)
No response
Logs / Screenshots
No response
Additional Context
No response
ESEngine Version
v0.25.0
Component
SDK / Runtime
Description
官方文档“过滤与变更检测”说明可以使用:
Query(Added(HealthComponent));
Query(Changed(Transform));
但将该 Query 作为 defineSystem 的参数时,TypeScript 类型检查失败。
运行时 SDK 已导出 Added、Changed、AddedWrapper 与 ChangedWrapper,
因此这看起来是自动生成的 .d.ts 内部类型约束遗漏,而不是 API 不存在。
Steps to Reproduce
import { Added, defineComponent, defineSystem, Query } from 'esengine';
const TestComponent = defineComponent('TestComponent', {
value: 0,
});
export const testSystem = defineSystem(
[Query(Added(TestComponent))],
(entities) => {
for (const [entity, component] of entities) {
console.log(entity, component.value);
}
},
);
3.执行 TypeScript 类型检查
Expected Behavior
Query(Added(TestComponent))和Query(Changed(TestComponent))应可直接作为
defineSystem的依赖参数,且回调正确推断 Query 结果类型Actual Behavior
Type 'QueryBuilder<[AddedWrapper<...>]>' is not assignable to type 'SystemParam'
Operating System
No response
Browser (if applicable)
No response
Logs / Screenshots
No response
Additional Context
No response