繁体   English   中英

打字稿导入/导出对象和传播

[英]typescript importing/exporting objects and spreading

我已经使用 TS 一年多了,但我仍然对导入和导出有些困惑。 为什么我不能将我导入到导出对象中的对象展开?

/// file1
export {
  PORT,
  SSL_CRT,
  SSL_KEY,
}
// file2
import * as env from 'file1'
// env.PORT is available at this point
export {
   ...env  // [ts] Identifier expected. [1003] 
}

我用以下方法解决了这个问题,但我知道它不一样,也不是我想要的。

// file2
import * as env from 'file1'
export default {
   ...env  // [ts] Identifier expected. [1003] 
}

您试图做的是重新导出。 方法如下:

// file2.ts
export * from './file1'

您不能从import * as env传播命名空间模块对象。 它是一个特殊的对象,据我所知,JavaScript 不允许您传播它。

我认为这符合您期望的方式:

// file1.ts
export {
    PORT,
    SSL_CRT,
    SSL_KEY
};
// file2.ts
import * as env from "./file1";

console.log(env); // { PORT: 'foo', SSL_CRT: 'bar', SSL_KEY: 'baz' }

export { env };
// file3.ts
import { env } from "./file2";

console.log(env); // { PORT: 'foo', SSL_CRT: 'bar', SSL_KEY: 'baz' }

所以回答你的问题:你不需要使用扩展运算符,因为对象正在被隐式解构。 为什么会发生这种情况是一个比我更聪明的人的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM