Što znači okružiti klasu uglatim zagradama "<>" u TypeScriptu?


Ja sam vrlo nov u TypeScriptu i puno mi se sviđa, posebno koliko je jednostavno raditi OOP u Javascriptu. Međutim, zapelo mi je pokušavajući shvatiti semantiku kada je riječ o korištenju uglatih zagrada.

Iz njihovih dokumenata vidio sam nekoliko primjera poput

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;
}

i

interface Square extends Shape, PenStroke {
  sideLength: number;
}
  
let square = <Square>{};

Imam problema shvatiti što točno ovo znači ili način kako razmišljati o tome/razumjeti to.

Može li mi to netko objasniti?

Odgovor #1

To se zove tipiziranje ili konverzija.

Ovo su isti:

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

Primjer :

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

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

Dakle, možete učiniti:

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

Ili :

let a = <Props> {};

Što će učiniti isto

Odgovor #2

Ovo se naziva Tipna Asercija.

Možete o tome čitati u Basaratovom 'TypeScript Deep Dive', ili u službenom TypeScript priručniku.

Također možete pogledati ovaj YouTube video za lijep uvod.

Povezani članci