如何替换 TypeScript 中的 self 类型?

How can I replace the type of self in TypeScript?

我正在使用嵌入式 JavaScript 引擎(基于 duktape)。在此上下文中,"self" 不是 Window 类型,而是 Script 或 JSComponent 类型。使用 typescript,在对自身使用这些 类 的成员时编译会导致错误。

因此,我需要能够将 self 重新声明为 JSComponent 或 Script。在标准 TypeScript 库中四处挖掘,我偶然发现了以下内容,但我在任何地方都找不到相关文档:

/// <reference no-default-lib="true"/>

将此添加到要包含一半的 d.ts 解决了问题:

/// <reference path="./Atomic.d.ts" />
/// <reference no-default-lib="true"/>

// Redeclare self as a JSComponent
declare var self: Atomic.JSComponent;

我现在可以在我的 TS 文件中引用它,并将 self 用作 JSComponent。但是,我不能再使用标准 类,例如 Object 和 Array-in 这个或我项目中的任何其他 TS 文件。

有没有办法只对这部分代码使用 no-default-lib 来替换 self 的定义? 或者,是否有其他方法可以实现此重新声明?

Is there a way to use no-default-lib for just this section of code, to replace the definition of self? Alternatively, is there another way to achieve this re-declaration?

提示 * 建议使用 tsconfig.json 并将 compilerOptions.noLib 设置为 true,而不是这个神奇的评论

回答

noLib 设置为 true 并从 TypeScript 存储库复制 lib.d.ts 的自定义副本进行编译。

此处涵盖的主题:http://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html