首页 > 解决方案 > TypeScript:普通和不可变js对象的深度遍历

问题描述

我有一个深入对象的函数:$get(['deep', 'inside'], object). 我可以这样输入:

...
export function $get<K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], T>(path: [K1, K2, K3], subject: T): T[K1][K2][K3];
export function $get<K1 extends keyof T, K2 extends keyof T[K1], T>(path: [K1, K2], subject: T): T[K1][K2];
export function $get<K1 extends keyof T, T>(path: [K1], subject: T): T[K1];

现在我需要让它与 immutableJS Map 对象一起工作。基本上我需要能够这样做:

function $get<K1 extends keyof T, T>(path: [K1], subject: T): T.get(K1);

但显然这是不可能的。任何想法如何使它工作?一种可能的解决方法是使用类似的东西seamless-immutable,但我只想知道我的所有选择。

标签: typescriptimmutable.js

解决方案


推荐阅读