Ich habe eine Funktion, die eine Suche durchführt. Die Suche kann auf verschiedene Arten erfolgen (durch Suchen nach einer ID oder durch Abfragen einiger Attribute). Ich möchte jedoch beschränken, was in weitergegeben werden Attribute kann ich dachte, dass ich so etwas tun könnte.Können mit Typoskriptschnittstellen Attribute gelöscht werden, die nicht in der Schnittstelle definiert sind?
interface Search {
_id?: string
people?: number
partyName?: string
otherField? string
}
function search(query: Search) {
myDbConnection.find(query).then(... // etc
}
Das Problem ist, dass jedes Objekt dazu anpaßt und query
zusätzliche Attribute enthalten. Zum Beispiel könnte dies übergeben werden:
search({otherField: "foo", aProtectedField: "bar"})
und aProtectedField
würde entlang zu find
weitergegeben werden.
Ich frage mich, ob es eine Typoskript Möglichkeit gibt, die übergebenen Attribute zu erzwingen. Eine Art von starken Parametern aus der Rails-Welt. Ich weiß, ich kann Dinge wie Form lodash oder vielleicht sogar eine SearchObject
Klasse machen und den Konstruktor als Mittel verwenden, um die zusätzlichen Attribute zu verwerfen, aber ich habe das Gefühl, es gibt eine Möglichkeit, dies innerhalb Typoskript zu tun, die ich einfach nicht weiß Über.