web-dev-qa-db-fra.com

Que signifie placer une classe entre crochets "<>" dans TypeScript?

Je suis très nouveau sur TypeScript et je l'aime beaucoup, en particulier la facilité avec laquelle il est possible de le faire OOP en Javascript. Je suis cependant coincé à essayer de comprendre la sémantique quand il s'agit d'utiliser équerres.

De leurs documents, j'ai vu plusieurs exemples comme

interface Counter {
    (start: number): string;
    interval: number;
    reset(): void;
}

function getCounter(): Counter {
    let counter = <Counter>function (start: number) { };
    counter.interval = 123;
    counter.reset = function () { };
    return counter;
}

et

interface Square extends Shape, PenStroke {
    sideLength: number;
}

let square = <Square>{};

J'ai du mal à comprendre ce que cela signifie exactement ou la façon de penser/comprendre.

Quelqu'un pourrait-il me l'expliquer?

36
davejoem

Cela s'appelle Type Assertion ou casting.

Ce sont les mêmes:

let square = <Square>{};
let square = {} as Square;

Exemple:

interface Props {
    x: number;
    y: number;
    name: string;
}

let a = {};
a.x = 3; // error: Property 'x' does not exist on type `{}`

Vous pouvez donc faire:

let a = {} as Props;
a.x = 3;

Ou:

let a = <Props> {};

Qui fera de même

52
Nitzan Tomer

Cela s'appelle Type Assertion .

Vous pouvez le lire dans "TypeScript Deep Dive" de Basarat , ou dans le manuel TypeScript officiel .

5
James Monger