it-source

어레이 파괴 시 유형

criticalcode 2023. 2. 16. 21:47
반응형

어레이 파괴 시 유형

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 
}

인수 목록 내의 배열을 파기하기 위한 적절한 구문은 다음과 같습니다.

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

}

네.TypeScript에서는 간단한 방법으로 배열 유형을 사용하여 튜플을 만듭니다.

type StringKeyValuePair = [string, string];

어레이 이름을 지정하여 원하는 작업을 수행할 수 있습니다.

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

하지만 내부 매개 변수의 이름은 지정하지 않습니다.또 다른 가능성은 쌍에 의한 파괴를 사용하는 것입니다.

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

TypeScript 4.0에서는 태플 타입이 라벨을 제공할 수 있게 되었습니다.

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

내 코드는 다음과 같았다.

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

typescript에서 TS2349 아래의 행에 오류가 발생하였습니다.type에 콜시그니처가 없는 식을 호출할 수 없습니다.

nodes.map(x => { 
//some mapping; 
    return x;
);

행을 아래와 같이 변경하면 문제가 해결되었습니다.

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

간단한 답변으로 이 작업을 수행할 수 있습니다.

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

언급URL : https://stackoverflow.com/questions/31923739/types-when-destructuring-arrays

반응형