

Jakého typu je proměnná (v Typescript)
Ahoj,
mám dotaz.
Uvažujme následující funkční kód:
function ProductModel() {
var self = this;
self.products = ko.observableArray([]);
self.currentFilter = ko.observable(); // property to store the filter
//...
self.filterProducts = ko.computed(function() {
if(!self.currentFilter()) {
return self.products();
} else {
return ko.utils.arrayFilter(self.products(), function(prod) {
return prod.genre == self.currentFilter();
});
}
});
}
Dále se zamysleme na přepisu do Typescriptu.
konkrétně mi jde o tento řádek:
return ko.utils.arrayFilter(self.products(), function(prod) {
return prod.genre == self.currentFilter();
});
Zvýrazněná proměnná prod - jakého je typu a jak ji natypovat?
Dá se zbaběle použít any.
Tedy něco, jako:
return ko.utils.arrayFilter(self.products(), function(prod: any) {
return prod.genre == self.currentFilter();
});
A kód bude fungovat (asi s menším dopadem na výkon?).
Ale co kdybych chtěl uvést ihned konkrétní typ. Např. "String" či přesněji ko.observableArray?
(objekt ko ani není v tomto scopu znám).
Podle kontextu to bude nejspíš typu "product", což by snad měl být tvůj vlastní typ.
A "any" nemá na výkon žádný vliv, protože TS se stejně kompiluje do JS, kde typová kontrola není.
Ano. díky za odpověď.
Konkrétně "product" je definován, ale takto:
Čili žádný "jednoduchý" objekt typu produkt se nekoná.
Jen anonymní pole.
Ano, mohl bych se spokojit s funkční any, ale chci vědět víc.
Product je ale { name: "Sušenky", type: "free" } nikoliv to celé pole.
To ano.
No tak v čem je problém?
Jak zapsat anonymní objekt - pole vstupujícího do funkce:
Třeba tak:
S použitím definičního souboru.
To už je upravené kapku víc, ale i tak testnu a pokusím se z toho vyjít.
Díky. Značím vyřešeno.