tapuscrit itérer les propriétés de l'interface
J'ai besoin de la carte d'interface des propriétés aux objets:
interface Activity {
id: string,
title: string,
body: string,
json: Object
}
Je fais:
headers: Array<Object> = [
{ text: 'id', value: 'id' },
{ text: 'title', value: 'title' },
{ text: 'body', value: 'body' },
{ text: 'json', value: 'json' }
]
Cela devient très répétitif. Ce que je voudrais, c'est quelque chose comme ceci:
headers: Array<Object> = Activity.keys.map(key => {
return { text: key, value: key }
})
OriginalL'auteur Chris | 2017-08-14
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas, les interfaces ne sont pour le moment de la compilation, parce que javascript ne le supporte pas.
Ce que vous pouvez faire est quelque chose comme:
(code dans l'aire de jeux)
La première (
const
) de la définition est une valeur, et la 2ème est une définition de type. Si par exemple vous n'aurez pas le 2ème, et vous le ferez:let a: Activity;
vous obtiendrez l'erreur suivante:"Cannot find name 'Activity'"
. Le compilateur utilisera ces définitions à l'différents moments/situations.OriginalL'auteur Nitzan Tomer
Si vous êtes d'accord avec les ayant-elle ajouté lors d'un moment de la compilation et à l'aide de caractères d'imprimerie >= 2.4.1, vous pouvez essayer le sens proposé ici.
Fondamentalement, vous devez ajouter le ts-transformateur-clés de la dépendance, personnalisé transformateur, comme un de base et vous serez en mesure de répertorier les propriétés de ce type:
OriginalL'auteur Vladyslav Zavalykhatko
si vous souhaitez garder l'interface capacité, vous pouvez effectuer les opérations suivantes, @Nitzan Tomer est droit. Interfaces font partie du système de type, par conséquent, ils ne sont pertinentes que dans le moment de la compilation, car ils sont omis dans le transpiled code.
OriginalL'auteur qballer