如何使TypeScript同时解构函数参数、指定默认值和可选的整个对象类型?

如何使TypeScript同时解构函数参数、指定默认值和可选的整个对象类型?,typescript,Typescript,请参阅此最小值函数 function addX({ num = 1 }) { return num + 1; } 上述函数完成了两件事 解构函数参数 指定默认值 现在,我可以使用如下函数: add({ num: 2 }); // valid add({}); // valid 然而,我不能这样使用它 add(); // Expected 1 arguments, but got 0 我找不到方法告诉TypeScript整个对象是可选的 // Invalid function add({

请参阅此最小值函数

function addX({ num = 1 }) {
  return num + 1;
}
上述函数完成了两件事

  • 解构函数参数
  • 指定默认值
  • 现在,我可以使用如下函数:

    add({ num: 2 }); // valid
    add({}); // valid
    
    然而,我不能这样使用它

    add(); // Expected 1 arguments, but got 0
    
    我找不到方法告诉TypeScript整个对象是可选的

    // Invalid
    function add({ num = 1 }?) {
      return num + 1;
    }
    
    // Invalid
    function add({ num = 1 }?: { num: number }) {
      return num + 1;
    }
    
    我怎样才能做到呢?

    这个怎么样

    function addX({ num = 1 } = {num: 1}) {
      return num + 1;
    }
    
    addX() // returns 2
    
    addX({}) // returns 2
    
    addX({num: 2}) // returns 3
    

    整洁的我认为这是唯一的方法。更简单的方法是
    函数addX({num=1}={})
    ,因为你已经有了
    num