我正在尝试向window.Node
添加一个新方法interface Node {
myMethod(selector: any): any
}
Node.prototype.myMethod = (selector) => {
//some code
}
并在我的代码中使用它,但未定义此方法。正如我在运行“离子服务”后所理解的那样,这段代码不包含在构建版本中。
我的tsconfig.json文件
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"dom",
"es2015"
],
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5"
},
"files": [
"src/app/customextensions/extensions.ts" //file with my new method
],
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
我试图添加
/// <reference path="customextensions/extensions.ts" />
到我的app.component.ts但它仍然不起作用。
更新: Extension methods in typescript (system) - 保罗的解决方案解决了我的问题。
答案 0 :(得分:0)
Typescript不会为接口生成任何代码。去打字稿操场并检查。 [https://www.typescriptlang.org/play/][1]
在你的extensions.ts中:
export interface Node {
myMethod(selector: any): any
}
export const MyNode : Node = {
myMethod(selector: any): any {
// put a function body here
}
}
在您的代码中,您可以导入MyNode并在其上调用方法
import {MyNode} from 'app/customextensions/extensions';
MyNode.myMethod();