我想修改nodejs IntFunction<String[][]> createArray2D = n -> new String[n][n];
模块的原型。
module
有一个为此定义的接口(@types/node
),但在NodeModule
模块时没有任何内容,所以我必须import
。
require
问题是模块没有任何定义。以import * as Module from "module"; // Error
var Module = require("module"); // Ok
返回。
我有这个
any
我必须创建自己的export interface CustomNodeModule extends NodeModule {
__thingy:()=>void;
}
Module.prototype.__thingy = function() {
// things!
}
接口,但是,如何修改CustomNodeModule
原型以及这些函数是否知道它们是Module
实例的一部分?
答案 0 :(得分:2)
由于TypeScript接口是开放式的,因此您不需要创建另一个接口,您可以使用您的方法扩展现有接口。
export interface NodeModule {
__thingy:()=>void;
}
答案 1 :(得分:1)
在某个全局文件(没有导入/导出的文件)中,添加以下内容:
declare module "module" {
export = Module;
var Module: ModuleConstructor;
interface ModuleConstructor {
new (id: any, parent: any): NodeModule;
readonly prototype: NodeModule;
Module: typeof Module;
globalPaths: string[];
/** @deprecated */
requireRepl(...args: string[]): any;
runMain(): void;
wrap(script: any): any;
wrapper: string[];
}
}
注意:可能会接受向此发送一个拉请求到DefinitelyTyped。
然后,在实际处理新属性的模块中,您可以写:
import m = require("module");
// This is a *global augmentation*.
// It adds to declarations in the global scope.
declare global {
interface NodeModule {
__thingy: () => void;
}
}
m.prototype.__thingy = function() {
// ...
};