function f([a,b,c]) {
// this works but a,b and c are any
}
ist es möglich so etwas zu schreiben?
function f([a: number,b: number,c: number]) {
// being a, b and c typed as number
}
arrays
types
typescript
destructuring
thr0w
quelle
quelle
Antworten:
Dies ist die richtige Syntax zum Destrukturieren eines Arrays in einer Argumentliste:
function f([a,b,c]: [number, number, number]) { }
quelle
f([a, b, c]: number[])
Ja, so ist es. In TypeScript tun Sie dies auf einfache Weise mit Array-Typen und erstellen Tupel.
Sie können tun, was Sie wollen, indem Sie das Array benennen:
function f(xs: [number, number, number]) {}
Aber Sie würden den interalen Parameter nicht benennen. Eine andere Möglichkeit ist die paarweise Destrukturierung:
function f([a,b,c]: [number, number, number]) {}
quelle
Mit TypeScript 4.0 können Tupeltypen jetzt Beschriftungen bereitstellen
type Range = [start: number, end: number]
quelle
Mein Code war so etwas wie unten
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
Typoskript gab mir einen Fehler in der Zeile unter TS2349: Es kann kein Ausdruck aufgerufen werden, dessen Typ keine Aufrufsignatur hat.
nodes.map(x => { //some mapping; return x; );
Das Ändern der Zeile nach unten löste mein Problem.
const [nodes, counts] = <Node[], number[]>getNodesAndCounts();
quelle
Als einfache Antwort möchte ich hinzufügen, dass Sie dies tun können:
function f([a,b,c]: number[]) {}
quelle