2012-10-14 14 views
16

Czy istnieje sposób na sparametryzowanie typu za pomocą innego typu w TypeScript oprócz użycia tablic maszynowych?Generics w TypeScript

Jest to naprawdę konieczne z KnockoutJs.

Odpowiedz

18

Generics nie są jeszcze obsługiwane, chociaż są rozważane. Oto, co specyfikacja ma do powiedzenia:

UWAGA: TypeScript obecnie nie obsługuje generycznych, ale spodziewamy się uwzględnić je w ostatecznym języku. Ponieważ system typu statycznego TypeScript nie ma manifestacji czasu pracy, Generics będzie oparty na "wymazaniu typu" i jest przeznaczony wyłącznie jako kanał do wyrażania relacji typu parametrycznego w interfejsach, klasach i sygnaturach funkcji .

Od specyfikacji języka maszynopis na końcu sekcji 3.

+0

Jakieś aktualizacje do tej pory? :) –

+1

Docelowe wydanie dla leków generycznych wynosi 0.8.3, zgodnie z mapą drogową http://typescript.codeplex.com/wikipage?title=Roadmap&referringTitle=Home –

+3

to już 0.9.0 według trackera problemów http: // maszynopis. codeplex.com/workitem/list/advanced?keyword=&status=Open%20(not%20closed)&type=All&priority=All&release=TypeScript%200.9.x&assignedTo=All&component=All&sortField=Votes&sortDirection=Descending&page=0 – zcrar70

0

używam raczej brudną obejścia. Możliwe jest przypisanie klasy do zmiennej typu any. Ten kod jest ważny:

class A{} 
var test:any=A; 
var a=new test(); 

Więc można parametrize swoje metody dodając kolejny parametr typu każdy

function(param:any){ 
    var test=new param(); 
    test.someFunction(); 
} 

Oczywiście to jest bardzo zły styl i prawdopodobnie nie jest zalecane. Ale dla mnie będzie to dotyczyło czasu, w którym generics będzie włączony do języka.