Chciałbym utworzyć ogólną klasę TypeScript do renderowania (jako listy HTML) tablicy obiektów, które implementują określony interfejs TypeScript.W maszynopisie: Czy istnieje sposób "kompilacji", aby uzyskać wszystkie nazwy właściwości zdefiniowane w interfejsie TypeScript?
np.
class GenericListRenderer<T> {
items: T[];
constructor(listItems: T[], className?: string){
this.items = listItems;
...
}
private getPropertyNames(): string[]{
// What is the best way to access all property names defined in
// TypeScript interface 'T' that was used in this generic?
...
}
render(){
var propNames: string[] = this.getPropertyNames();
// render list with each item containing set of all
// key(prop name)/value pairs defined by interface 'T'
...
}
}
Pytanie: jaki byłby najlepszy sposób uzyskania listy "kompilacji" wszystkich nazw właściwości zdefiniowanych w określonym() interfejsie TypeScript?
Podobnie jak szablony C++, uważam, że TypeScript może rozróżniać te generyczne podczas "czasu kompilacji", kiedy informacja typu TypeScript (jak interfejs dostarczony do generycznego używanego do tworzenia instancji danego obiektu) jest łatwo dostępna.
Ponieważ wszystkie wymagane informacje o typie są potencjalnie dostarczane, byłem po prostu ciekawy, czy dostępne jest rozszerzenie/obiekt TypeScript, aby uzyskać dostęp do tych informacji bez nadmiernego filtrowania plików JavaScript o "wanilii" - co może być problematyczne z powodu do niejednoznacznych problemów związanych z dziedziczeniem (np. pożądane właściwości dziedziczone przez TypeScript mogą zostać odfiltrowane, jeśli do właściwości filtrowania używany jest język wykonawczy, ogólny, JavaScript (obj.hasOwnProperty (prop)).
Ten przydatny potencjał introspekcji może być jednoznacznie rozwiązany przy pomocy super-zestawu typowych danych metadanych podczas "kompilacji", a próba rozwiązania tych informacji w przetłumaczonym kodzie JavaScript, gdy wszystkie informacje tego typu zostaną odrzucone.
Nie chciałbym "wymyślać na nowo" kółka z potencjalnie niedoskonałym hackem JavaScript, jeśli istnieje standardowe podejście (TypeScript).
poważaniem: Początkujący maszynopis Guy, John
W środowisku wykonawczym jest to zwykły kod JavaScript, więc w rzeczywistości poszukujesz metody JavaScript, aby uzyskać wszystkie właściwości ... i na to odpowiada http://stackoverflow.com/questions/85992/how-do-i -inumerate-the-properties-of-a-javascript-object – Markus