没有导出成员的命名空间,vs IIFE

时间:2017-01-11 15:44:23

标签: typescript

如果命名空间中没有export ed成员,并且不需要在其他地方合并命名空间,那么这有什么好处:

namespace Dummy {
    //code here
}

对此:

(() => {
    //code here
})();

1 个答案:

答案 0 :(得分:3)

IIFE在全球范围内减少了一件事(命名空间在全局范围内只留下了一件事),所以如果你不想要触及的东西,IIFE是最干净的解决方案。

虽然有一个有趣的平行线,但它是C#中的sealed关键字...在类上使用Dummy可以防止它被分类。在很多使用它的地方,有很多关于它如何难以扩展行为的抱怨。如果您的代码是库的一部分,您可能需要考虑是否要绝对隐藏IIFE中的<ArrayOfCurrency xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MobileAssignmentApi.Models"> <Currency> <Buy>21.19573</Buy> <CurrencyId>53</CurrencyId> <Name>USD/MXN</Name> <PipMultiplier>10000</PipMultiplier> <Sell>21.15679</Sell> </Currency> <Currency> <Buy>1.46806</Buy> <CurrencyId>22</CurrencyId> <Name>EUR/NZD</Name> <PipMultiplier>10000</PipMultiplier> <Sell>1.46395</Sell> </Currency> <Currency> <Buy>1.34658</Buy> <CurrencyId>15</CurrencyId> <Name>EUR/CAD</Name> <PipMultiplier>10000</PipMultiplier> <Sell>1.3445</Sell> </Currency> . . . </ArrayOfCurrency> ,或者是否有人想要扩展或合并其内容 - 但它当然是您的选择根据您的具体情况。