代码之家  ›  专栏  ›  技术社区  ›  Armeen Moon

是否有sugar和可选的链接/空合并来防止say Array.map的类型错误?

  •  0
  • Armeen Moon  · 技术社区  · 5 年前

    有没有糖可以确保map不会使用诸如 optional chaining / nullishcoalescing ?

    let x = {y: 1, z: 2};
    
    x?.map(i => i); // Typeerror
    Array.isArray(x)?.map(i => i); // Typeerror
    
    let y = '1234';
    y?.length && y.map(i => i) // Typeerror
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Eric F.    5 年前

    这些类型错误似乎是正确的。显然不能对对象文本、布尔值或字符串调用映射。

    如果您想任意调用map,可以继续使用 ?.(params)

    
    let x = {y: 1, z: 2};
    
    x?.map?.(i => i);
    Array.isArray(x)?.map?.(i => i);
    
    let y = '1234';
    y?.length && y.map?.(i => i)
    

    请记住,这只检查 map 存在并且是非空的/未定义的。如果它确实存在但不是一个函数,那么你仍然会得到一个错误。