常见问题
TypeScript 类型推导:如何让 useDevices / useDevicesProps 等获得完整 DP 类型?
useDevices、useDevicesProps、useDevicesActions、useStructuredDevicesProps、useStructuredDevicesActions 等多设备 Hooks 默认返回泛型类型,无法推导各设备 key 对应的具体 DP。推荐在项目的 typings/sdm.d.ts 中通过 declare module 覆写返回类型,实现 按设备 key 精确绑定 Schema。
第一步:为每种设备定义独立 Schema
在 src/devices/schema.ts 中,按设备 PID(角色)分别导出 Schema:
src/devices/schema.ts
第二步:在 typings/sdm.d.ts 中覆写多设备 Hooks 类型
以 useDevices 为例,覆写返回的 MultiDevicesData;useDevicesProps、useDevicesActions 等会基于同一设备映射类型获得推导:
typings/sdm.d.ts
覆写后,所有多设备 Hooks 调用侧无需改动即可获得完整 DP 推导,例如:
个别页面设备类型不同时:局部类型收窄
若某个页面中特定 key 绑定了不同 Schema 的设备,可在该页面局部定义类型并通过 as 收窄,不影响其他页面: