我已经使用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]
}
答案 0 :(得分:1)
您尝试做的是重新导出。方法如下:
// file2.ts
export * from './file1'
您无法传播import * as env
中的名称空间模块对象。
这是一个特殊的对象,据我所知,JavaScript不允许您传播它。
答案 1 :(得分:0)
我认为这可以按照您期望的方式工作:
// 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' }
因此回答您的问题:您不需要使用散布运算符,因为对象正在隐式地进行结构分解。为什么会发生这种情况,这是一个比我聪明的人的问题。