我有:
const fs = require('fs');
const packageConfig = JSON.parse(fs.readFileSync('./package.json'));
const { jspm: { configFile: jspmConfigFile }} = packageConfig;
但packageConfig
的{{1}}值可能未定义。在这种情况下,我想将configFile
默认为jspmConfigFile
是否可以在不创建扩展packageConfig对象的情况下执行此操作?
我意识到我可以做类似的事情:
'config.js
但只是为了通过解构来获得合理的默认值,这是非常混乱的。
我错过了什么?
答案 0 :(得分:5)
对象解构中的默认值的语法是:
const { jspm: { configFile: jspmConfigFile = 'config.js' }} = packageConfig;
但这还没有在Firefox中实现:https://bugzilla.mozilla.org/show_bug.cgi?id=932080
答案 1 :(得分:2)
我不确定ES2015的解构实际上会在这里买到任何东西。在一天结束时,你只是在解构一个元素。你几乎写了一个奇特的方法:
const jspmConfigFile = packageConfig.jspm.configFile;
您可以在最里面的部分中使用= 'defaultValue'
指定默认值,但我不相信它实际上比ES5 || 'default'
版本更好。
作为旁注,您可以在节点中require
JSON文件:
const jspmConfigFile = require("./package.json").jspm.configFile || "default";
我认为是一个短的衬里。你可以直接import
在一个班轮中使用它:
import { jspm: { configFile: jspmConfigFile = 'config.js' }} from "./package.json"
但老实说,我认为这不是更清楚。