Š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.
