Verwendung von benannten Parametern in JavaScript (basierend auf TypeScript)
Ich habe Probleme bei der Verwendung von benannten Parametern in TypeScript. Ich weiß, dass es auf die Weise, wie ich es in TypeScript verwende, nicht unterstützt wird.
Aber wie kann ich das tun?
TypeScript:
SomeFunction(name1: boolean,
name2: boolean,
name3: boolean,
name4: boolean) // Will occur only one time,
// so the change should be in TypeScript
JavaScript:
$(function () {
...SomeFunction({name1:false,
name2:false,
name3:false,
name4:true}); // Will occur 100 times
});
Ich habe mir angesehen (das hat nicht funktioniert):
Gibt es eine Möglichkeit, benannte Parameter in einem Funktionsaufruf in JavaScript zu übergeben?
Wie kann ich optionale benannte Parameter zu einem TypeScript-Funktionsparameter hinzufügen?
Was kann ich in TypeScript tun, um benannte Parameter in JavaScript zu verwenden?
Was mich wundert, ist, dass Visual Studio 2015 keinen Syntaxfehler angezeigt hat, als ich den benannten Parameter so verwendet habe, wie ich ihn in TypeScript benutzt habe...
PS.: Ich verwende TypeScript 2.1
Antwort #1
Echte benannte Parameter existieren weder in JavaScript noch in TypeScript, aber man kann Destructuring verwenden, um benannte Parameter zu simulieren:
interface Names {
name1: boolean
name2: boolean
name3: boolean
name4: boolean
}
function myFunction({name1, name2, name3, name4}: Names) {
// name1, etc. are boolean
}
Hinweis: Der Typ Names ist tatsächlich optional. Der folgende JavaScript-Code (ohne Typisierung) ist in TS gültig:
function myFunction({name1, name2, name3, name4}) {
// name1, etc. are of type any
}
Antwort #2
Der einzige Weg, etwas in der Nähe von „benannten Parametern“ zu erhalten, besteht darin, einen einzigen Objektparameter zu verwenden:
type SomeFunctionParams = {
name1: boolean;
name2: boolean;
name3: boolean;
name4: boolean;
}
SomeFunction(params: SomeFunctionParams) { ... }
Und dann:
$(function () {
SomeFunction({
name1:false,
name2:false,
name3:false,
name4:true
});
});
