如何在 TypeScript 中导出对象?

Posted

技术标签:

【中文标题】如何在 TypeScript 中导出对象?【英文标题】:How do I export an object in TypeScript? 【发布时间】:2017-06-05 09:05:15 【问题描述】:

例如,我正在尝试导出一个 TS 对象以获取此 javascript 输出:

const path = require('path'),
      rootPath = path.normalize(__dirname + '/..'),
      env = process.env.NODE_ENV || 'development';

let config = 
  development: 
    amqpUrl: "amqp://localhost:15672",
    root: rootPath
    
  ,
  test: 
    amqpUrl: "amqp://localhost:5672",
    root: rootPath
  
  ,
  production: 
    amqpUrl: "amqp://localhost:5672",
    root: rootPath

  
;
module.exports = config[env];

这是我的TS,但是导出不清楚,

import path = require("path")
    
    const rootPath = path.normalize(__dirname + '/..')
    const env = process.env.NODE_ENV || 'development'
    
    let config = 
      development: 
        amqpUrl: "amqp://localhost:15672",
        root: rootPath
        
      ,
      test: 
        amqpUrl: "amqp://localhost:5672",
        root: rootPath
      
      ,
      production: 
        amqpUrl: "amqp://localhost:5672",
        root: rootPath
    
      
    ;

   /* this is the line i'm having problem how can i export config object*/
    // export config[env];

我尝试过export default config[env],但它生成的输出不是预期的。我做错了什么?

【问题讨论】:

【参考方案1】:

在 ES6 中,您可以使用导出功能导出名称,或者默认情况下您可以导出任何内容。 require 格式如下:

let config = require('config')

它采用配置文件的默认导出。 在你的情况下,你应该这样做:

export default config[env]

如果你想使用导出,你可以这样做:

let Environment = config[env];
export Environment

区别在于:

import EnvirmentNameWhatever from "./config"

import Environment from "./config"
注意 - 默认导出时,您可以使用任何您喜欢的名称,而仅导出时,您必须使用导出的名称。

【讨论】:

【参考方案2】:

在要导出的声明上使用export 关键字应该可以完成这项工作,如下所示:

import path = require("path")

const rootPath = path.normalize(__dirname + '/..')
export const env = process.env.NODE_ENV || 'development'

export let config = 
    development: 
    amqpUrl: "amqp://localhost:15672",
    root: rootPath

    ,
    test: 
    amqpUrl: "amqp://localhost:5672",
    root: rootPath

    ,
    production: 
    amqpUrl: "amqp://localhost:5672",
    root: rootPath

    
;

【讨论】:

我需要导出config[env] 啊,对不起。不会将env 添加到导出的config 对象中吗?我错过了什么吗?

以上是关于如何在 TypeScript 中导出对象?的主要内容,如果未能解决你的问题,请参考以下文章

从 React 组件中导出 TypeScript 类型的字符串属性值?

如何在没有 <reference> 的情况下在 TypeScript 中导入带有“Typings”的模块?

如何在 TypeScript npm 模块中导出类型

如何使用对象解构在 TypeScript 中导入 JSON?

为啥不能在 TypeScript 中导出类实例?

在 typescript 包中导出多个函数