Javascript 为什么“导出默认值”用“默认值”而不是对象本身导出对象?
所以我有三个Typescript文件: config/env/development.tsJavascript 为什么“导出默认值”用“默认值”而不是对象本身导出对象?,javascript,typescript,Javascript,Typescript,所以我有三个Typescript文件: config/env/development.ts 从“../Config”导入{Config}; 类DevConfig{ 公共配置:配置={ 主机:“localhost”, 端口:8080 }; 构造函数(){ this.config.HOST='localhost'; this.config.PORT=(process.env.PORT与number一样未知)| | 8080; } } 导出默认的新DevConfig().config; config
从“../Config”导入{Config};
类DevConfig{
公共配置:配置={
主机:“localhost”,
端口:8080
};
构造函数(){
this.config.HOST='localhost';
this.config.PORT=(process.env.PORT与number一样未知)| | 8080;
}
}
导出默认的新DevConfig().config;
config/index.ts
从“/Config”导入{Config};
process.env.NODE_env=process.env.NODE|env | |“开发”;
类AppConfig{
public-allConfig:Config;
public-envConfig:Config;
构造函数(){
this.envConfig=require(`${uuuuu dirname}/env/${process.env.NODE\u env}.js`);
this.allConfig=require(`${uu dirname}/all.js`);
}
}
导出默认的新AppConfig().envConfig;
另一个文件是:
/附件ts
从“express”导入*为express;
从“./controllers/status”导入{hi};
从“/config”导入AppConfig;
类应用程序{
公共快递:任何;
公共配置:对象;
构造函数(){
this.express=express();
this.config=AppConfig;
这是mountsroutes();
log(`Output test:${JSON.stringify(this.config,null,4)}`);
}
私人山路(){
const router=express.router();
router.get('/',hi);
this.express.use(“/”,router);
}
}
导出默认的新应用程序();
运行此命令时看到的输出如下所示:
输出测试:{
“默认值”:{
“主机”:“本地主机”,
“端口”:8080
}
}
“默认”从何而来?如果我尝试执行
console.log(this.config.PORT)代码>,我得到一个未定义的
。有人能澄清一下吗?一个模块可以有一个默认导出
和常规的导出
s,但是require()
只能返回一个值。因此,您使用的transpiler必须将多个导出转换为一个值。它通过将所有导出转换为一个对象来实现
// this
export default 1;
export const named = 2;
// turns into:
module.exports = {
default: 1,
named: 2
};
由于default
是保留关键字,因此不能用作命名导出,因此为export default
设置default
键非常有意义
您可以使用require(“…”)轻松获得默认导出。默认值
那么,{“主机”:“本地主机”,“端口”:8080}
来自哪里?您不应该这样做。使用。那么需要的文件是否有默认导出?请发布它的内容,它看起来非常相关(比你发布的第二个文件要重要得多)。你就在这里,这就是default
的来源。请看一看Typescript编译器正在生成的代码。@codehitman由于您仍然只想导出对象(?),我怀疑您是否需要对类实例执行任何操作的方法。只需编写简单的函数
声明。如果您想用方法导出对象,也可以用对象文本编写方法定义:-)…或者只编写module.exports={HOST:“localhost”,PORT:process.env.PORT | 8080}代码>而不是过度设计的typescript内容:-)“为导出默认设置一个default
键非常有意义。”-这不仅仅是因为default
是一个保留关键字,而是默认导出实际上只是一个普通的导出,带有一个特殊的标识符,可以保存一些键入。您也可以使用“命名”语法导出和导入is。我正要提到json配置,但使用process.env
需要一个脚本。