Quando si utilizza dattiloscritto un'interfaccia dichiarata potrebbe essere la seguente:Come ridurre javascript oggetto per contenere solo oggetti di interfaccia
interface MyInterface {
test: string;
}
E un'implementazione con la proprietà in più potrebbe essere simile a questo:
class MyTest implements MyInterface {
test: string;
newTest: string;
}
Esempio (qui la variabile 'ridotta' contiene ancora la proprietà 'newTest'):
var test: MyTest = {test: "hello", newTest: "world"}
var reduced: MyInterface = test; // something clever is needed
Domanda
In modo generale, come si può fare la variabile 'ridotto' per contenere solo le proprietà dichiarate nell'interfaccia 'MyInterface'.
Perché
Il problema si verifica quando si cerca di utilizzare la variabile 'ridotta' con angular.toJson prima di inviarlo a un servizio di riposo - il metodo toJSON trasforma la variabile Newtest, anche se non è accessibile sul istanza durante la compilazione, e questo rende il servizio di riposo non accetta il json poiché ha proprietà che non dovrebbero essere lì.
No, mi dispiace, non aiuta. E non riesco a vedere come potrebbe essere un duplicato neanche. Grazie per aver risposto :) :) –
È un duplicato perché il valore "ridotto" di cui parli si chiama casting. –
Bene, il problema che ho non è come lanciare una variabile: funziona bene. Il problema è che l'istanza castata contiene ancora le proprietà extra. La domanda che hai collegato non interessa a questo e non la richiede neanche. –