podczas korzystania maszynopis zadeklarowana interfejs mógłby wyglądać następująco:Jak zmniejszyć obiekt JavaScript, żeby zawierać tylko właściwości z interfejsem
interface MyInterface {
test: string;
}
i realizacja dodatkowo własności może być tak:
class MyTest implements MyInterface {
test: string;
newTest: string;
}
Przykład (tutaj zmienna "zredukowana" nadal zawiera właściwość "test nowej"):
var test: MyTest = {test: "hello", newTest: "world"}
var reduced: MyInterface = test; // something clever is needed
Pytanie
W sposób ogólny, jak można zrobić zmienną „” to tylko obniżoną zawierają właściwości zadeklarowane w interfejsie „MyInterface”.
Dlaczego
Problem występuje, gdy próbuje użyć „zmniejszona zawartość” zmienną angular.toJson przed wysłaniem go do serwisu reszta - metoda toJSON przekształca zmienną newTest, nawet jeśli nie jest dostępny na instancja podczas kompilacji, a to sprawia, że usługa reszta nie akceptuje json, ponieważ ma właściwości, które nie powinny tam być.
Nie, przepraszam, nie pomaga. I nie może zobaczyć, jak to może być duplikat. Dziękuję za odpowiedź :) –
Jest to duplikat, ponieważ "zmniejszona" wartość, o której mówisz, nazywa się castingiem. –
Cóż, problemem, jaki mam, nie jest to, jak obsadzić zmienną - działa dobrze. Problem polega na tym, że rzucana instancja nadal zawiera dodatkowe właściwości. Pytanie, które łączysz, nie dba o to i nie prosi o to. –