Für configs, wir in der Regel die Funktion verwenden Destructuring assignment
zu prüfen, ob die Eigenschaften in einem Objekt sind oder nicht durch den Zucker von ES6 mit (ES2015).
Außerdem können wir mit dieser Funktion auch Standardwerte für die Konfigurationen festlegen.
{prop1, prop2, prop3: path='', prop4='helloworld', ...others} = config
Nach Destrukturierung Zuordnung erfolgt ist, müssen nur vor einem Scheck tun, was wir mit der spezifischen Konfiguration tun werden. dh
if (!prop1) {
throw new Error(`Config object miss the property ${prop1}`);
}
doSomething(prop1);
Aber wenn Sie noch alle configs am Anfang überprüfen möchten, können Sie so etwas wie dieses,
class myClass {
constructor(config) {
if (!config) {
throw new Error("You must provide a config object");
}
// You can assign the values to a new object like "tmpConfig" or just assign them back to "config" for the case config.propX === undefined
({prop1: config.prop1=undefined, prop2: config.prop2=undefined, prop3: config.prop3=undefined, prop4: config.prop4=undefined} = config);
for (const key in config) {
if (!config[key]) {
throw new Error(`Config object miss the property ${key}`);
}
}
Object.assign(this, config);
}
}
Oder nur mit Object.assign(), indem Standardwerte tun,
class myClass {
constructor(config) {
if (!config) {
throw new Error("You must provide a config object");
}
let requiredConfigs = {
prop1: undefined,
prop2: undefined,
prop3: undefined,
prop4: undefined,
}
let tmpConfig = Object.assign(requiredConfigs, config);
for (const key in tmpConfig) {
if (!tmpConfig[key]) {
throw new Error(`Config object miss the property ${key}`);
}
}
Object.assign(this, tmpConfig);
}
}
=>Wir verwenden Destructionation-Zuweisung und Object.assign() viel für die Einstellung von Einstellungen.
macht dies 'if (! This [key]) {' bedeutet, dass keine der 'config' Eigenschaften leer sein darf (alle Requisiten sollten gefüllt sein)? – RomanPerekhrest
Ja, alle Eigenschaften sollten nicht leere Zeichenfolgen sein – IggY