Arrays 分解数组时的类型

Arrays 分解数组时的类型,arrays,types,typescript,destructuring,Arrays,Types,Typescript,Destructuring,有可能写这样的东西吗 function f([a,b,c]) { // this works but a,b and c are any } 这是在参数列表中分解数组的正确语法: function f([a: number,b: number,c: number]) { // being a, b and c typed as number } 是的。在TypeScript中,您可以用一种简单的方法来处理数组类型,即创建元组 function f([a,b,c]: [number,

有可能写这样的东西吗

function f([a,b,c]) {
  // this works but a,b and c are any
}

这是在参数列表中分解数组的正确语法:

function f([a: number,b: number,c: number]) {
  // being a, b and c typed as number 
}

是的。在TypeScript中,您可以用一种简单的方法来处理数组类型,即创建元组

function f([a,b,c]: [number, number, number]) {

}
您可以通过命名阵列来执行所需操作:

type StringKeyValuePair = [string, string];
但你不会说出内部参数。 另一种可能性是使用成对分解:

function f(xs: [number, number, number]) {}

我的代码如下所示

function f([a,b,c]: [number, number, number]) {}
typescript在TS2349下面的行中给了我错误:无法调用类型缺少调用签名的表达式

type Node = { 
    start: string;
    end: string;
    level: number;
};

const getNodesAndCounts = () => { 
    const nodes : Node[]; 
    const counts: number[];
    // ... code here

return [nodes, counts];
}

const [nodes, counts] = getNodesAndCounts(); // problematic line needed type
将线路改为以下解决了我的问题

nodes.map(x => { 
//some mapping; 
    return x;
);
const[nodes,counts]=getNodesAndCounts();

使用TypeScript 4.0,元组类型现在可以提供标签

const [nodes, counts] = <Node[], number[]>getNodesAndCounts();

作为一个简单的回答,我想补充一点,您可以这样做:

type Range = [start: number, end: number]

我需要不同的数据类型,而此代码可能会回答此问题,提供有关此代码为什么和/或如何回答此问题的其他上下文,以提高其长期值。如果所有参数都是相同类型的,您可以缩短此语法吗?在f([a,b,c]:[number]){…}@filipbarak
f([a,b,c]:number[])的行中的某物
function f([a,b,c]: number[]) {}