我在TypeScript中编写一个程序,主要遵循AMD加载模式,使用import语句加载类。
import TestRunner = require('../TS/TestRunner');
但是,我确实希望包含一些扩展方法来扩展NodeList
等对象 - 所以会有少量扩展文件包含lib.d.ts
接口的扩展,然后是实现附加功能 - 例如......
interface NodeList {
extensionMethod(...info): NodeList;
}
NodeList.prototype.extensionMethod = function (...info: string[]) {
return this;
};
我可以只包含我程序开头的所有扩展程序,以便它们可用 - 但我实际上希望像其他代码一样按需加载它们。问题是,包含扩展名的文件并没有真正导出任何要使用的内容 - 它只是将此代码添加到现有对象中。
在我的TypeScript程序中包含扩展名的最佳方法是什么?
答案 0 :(得分:1)
这是一个有效的设置。要点:
interface
扩展名放在不外部模块的文件中(否则您将在外部模块范围内声明新接口而不是扩展现有的类型)。require
。对于AMD方案,请使用未记录的/// <amd-depdendency path="path" />
标记。<强> myExtensions.d.ts 强>
// In case you're not using node.d.ts
declare var process: process;
interface process {
getFour: any;
}
<强> extensions.ts 强>
/// <reference path="myExtensions.d.ts" />
process.getFour = () => 4;
<强> consumer.ts 强>
/// <reference path="myExtensions.d.ts" />
// In case you're not using node.d.ts
declare var require;
// Manual import of extensions
require('./extensions');
console.log(process.getFour()); // Works