有没有一种方法可以将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";
现在模块中的所有内容都是严格的,而脚本本身并非如此。
答案 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。