解构对象中剩余数组的类型

Type of a rest array in a destructured object

如何在此处将 c 注释为任意类型的可选数组?

const a = ({ b, ...c }: { b: string, c: ? }) => null

因为那是 属性 解构,它不会是一个数组,而是一个 object:

const a = ({ b, ...c }: { b: string, c: object}) => null;

实时非 TypeScript 示例:

const a = ({ b, ...c }) => {
  console.log("typeof c:", typeof c);                 // true
  console.log("Array.isArray(c):", Array.isArray(c)); // false
  console.log(JSON.stringify(c));                     // '{"x":1,"y":2,"z":3}'
};
a({x: 1, y: 2, z: 3});

如您所述,任意类型的可选数组:c?: Array<any>

const a = ({b, c}: { b: string, c?: Array<any> }): void => null

示例:

const a = ({b, c}: { b: string, c?: Array<any> }): void => {
  console.log('b:', b)
  if (c instanceof Array) {
    for (let item of c) {
      console.log('c item:', item)
    }
  }
}

a({b: '1', c: [1]})
a({b: '1'})  

{b, c}:是解包,bc都是变量。 {b, ...c}: 是非法声明。 .