是否有任何糖可以确保map不会使用可选链接/无效合并等工具键入错误?
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
这些类型错误似乎是正确的。显然,您不能在对象文字、布尔值或字符串上调用 map。
如果你仍然想选择性地调用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
的属性是否存在且为非 null/未定义。如果它确实存在但不是函数,您仍然会收到错误。