TypeScript类导出为具有严格模式的UMD模块

时间:2015-10-14 12:08:11

标签: typescript strict umd

有没有一种方法可以将TypeScript类导出为UMD模块并启用严格模式? “陷阱”是严格的模式部分。

我的代码类似于:

class Foo {
    bar(): Foo.Bam {}
}

namespace Foo {
    export function boom() {}
    export interface Bam {}
}

export = Foo;

在其他地方,模块可以像:

一样使用
import * as Foo from 'my-module';

var foo = new Foo();
foo.bar()

Foo.boom();

interface Kaboom extends Foo.Bam {}

我希望严格模式适用于所有Foo,但不适用于整个脚本,因为它可能与其他未知脚本连接。

还正在生成定义文件。

我可以在构建过程中将所有东西都包装在一个闭包中,但我首先要寻找一个预编译解决方案。

编辑:

在我的问题中添加了更多详细信息,以防将来有人找到方法。

我最后只是添加了一个简单的后编译修复程序。生成UMD模块后。我替换了这一行:

})(["require", "exports"], function (require, exports) {

这一行:

})(["require", "exports"], function (require, exports) {"use strict";

现在模块中的所有内容都是严格的,而脚本本身并非如此。

2 个答案:

答案 0 :(得分:1)

如果您以标准方式使用模块(即根据需要加载它们),您可以将它添加到文件的顶部 - 该语句将作用于文件范围。

boolean

如果您实际上将输出组合到单个文件中,则无法在不引入命名空间的情况下限制语句的范围(除此之外:我不是内部模块/命名空间的粉丝)。

"use strict"

class Foo {
    bar() {}
}

namespace Foo {
    export function bar() {}
}

export = Foo;

答案 1 :(得分:0)

这是一个固定的问题。请参阅Change prologue emit location to inside module IIFEs