首页 > 解决方案 > 是否有代表任何可迭代对象的打字稿类型

问题描述

我们有如下功能

export const objectUndefinedToNull = (obj) => {
  const apply = (o) => {
    Object.keys(o).forEach((key) => {
      const value = o[key];
      if (value === undefined) {
        o[key] = null;
      }
      if (value instanceof Array || value instanceof Object) {
        apply(value || {});
      }
    });
  };
  apply(obj);
  return obj;
};

我想将 allanyunknowntypes 替换为更合适的类型。是否有任何类型代表任何可迭代类型,例如可以迭代的数组或对象?

标签: typescripttypescript-generics

解决方案


您可以如下定义一个IterableType类,然后使用它代替anyand unknown

class IterableType<T> implements Iterable<T>, Record<K,T>

或者,按照您的原始代码继续使用anyand ,但向函数添加一些类型检查以检查它是否是有效类型(数组、记录等)。unknown


推荐阅读