To znaczy, że nie możesz użyć czegoś takiego?Czy typy generyczne maszynopisu używają typu wymazywania do implementacji generycznych?
class Helpers
{
static ObjectAs<T>(val: any): T {
if (!(val instanceof T)) {
return null;
}
return <T>val;
}
}
Jakiekolwiek obejście, aby uzyskać podstawowy rodzaj zgłoszenia?
Aktualizacja 1:
Jak wspomniano Ryan Cavanaugh, po opracowaniu, cały system typu są usuwane, bardziej jak wdrożenie Java Generics. Wierzę, że .Net implementacja Generics do zachowania informacji o typie w skompilowanym kodzie jest lepsza niż Java. Jednak nie mogę pomóc, ale zastanawiam się, dlaczego nie jest możliwe zezwolenie na pełną introspekcję runtime typów ogólnych i ogólnych typów parametrów w TypeScript? Dlaczego projektanci TypeScript zdecydowali się usunąć wszystkie ogólne informacje o typie w czasie wykonywania?
następujący kod maszynopis:
function As<T>(n: any): T {
if (n instanceof T) {
return n;
} else {
return null;
}
}
var obj: Object = 1;
var x = As<number>(obj);
można przetłumaczyć do tego kodu JavaScript:
function As(n, T) {
if (n instanceof T) {
return n;
} else {
return null;
}
}
var obj = 1;
var x = As(obj, Number);
Zachowanie informacji o typie w czasie wykonywania i zgodności z kodem js!
Aktualizacja 2: ja pisał tę kwestię na CodePlex, chcąc dostać więcej od maszynopis ludzi https://typescript.codeplex.com/discussions/550262
Co za niesamowite pytanie ... nadzieję, że nie robi zamknięte więc stylem –
stronie 2 stanach specyfikacji, że wszystkie informacje typu są usuwane przed JavaScript jest emitowany przez kompilator. Biorąc pod uwagę te informacje, według mojej najlepszej opinii, operator instanceof nie miałby znaczenia w środowisku wykonawczym. Moja najlepsza rada to stworzenie posta na forum poświęconym specyfikacji: http://typescript.codeplex.com/discussions/topics/5488/language-specification. Możesz zmusić ich do myślenia o wspieraniu tego, jeśli jeszcze nie jest. –
@ErikNedwidek Już na nim :) –