2016-08-08 23 views
7

TipScript için çok yeni ve bunu çok seviyorum, özellikle de Javascript'te OOP yapmak ne kadar kolay. Ancak, köşeli parantez kullanıldığında semantikleri anlamaya çalışıyorum. Onların DokümanlarSınıfı "<>" köşeli parantez içine almak ne anlama geliyor?

, ben

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

ve

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

let square = <Square>{}; 

Ben bu tam anlamı veya bunu anlamak/düşünmek yolu anlama güçlüğü yaşıyorum gibi çeşitli örnek gördük.

Birisi bana açıklayabilir mi?

cevap

12

Bu, Type Assertion veya döküm olarak adlandırılır.

Bunlar

aynıdır:

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

Örnek:

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

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

Yani yapabilirsiniz:

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

Veya:

let a = <Props> {}; 
let a: Props = {}; 

Bunu yapacak

+0

Sadece meraktan, arayüz tanımlarında bunu yapmak mümkün mü? Örneğin, – davejoem

+0

Bunun ne demek istediğinden emin değilim, sorunuzu bir örnekle düzenleyebilir misiniz? –

+0

Sadece meraktan, arayüz tanımlarında bunu yapmak mümkün mü? Örneğin: - 'arayüz Kişi {name: string; çağ: sayı;} Arayüzü Çağrılar {(kişi olarak Kişi): boolean;} ' – davejoem