如何使用TypeScript中的方法动态扩展类?任何例子? 我试试:
ID (PK) DEPT_ID CREATION_DATE VALUE
-------------------------------------------------------------
1 101 10/12/2016 3.0
2 102 10/12/2016 2.5
3 103 10/12/2016 3.3
4 101 10/13/2016 3.4
5 102 10/13/2016 2.7
6 103 10/13/2016 4.0
但编译器给我一个错误。
答案 0 :(得分:1)
您还需要执行以下操作:
interface UsersBlocksMyOrders {
myFunc(): any;
}
否则编译器不知道它。
它确实有效,即使是现有的课程 例如:
interface String {
logit(): void;
}
String.prototype.logit = function () {
console.log(this);
}
let a = "string";
a.logit();
如果您要添加更多相关信息,则可以更轻松地为您提供帮助。
您对进口没有任何说明 因为你想要改变一个名为Module Augmentation的不同模块中的某些东西,你需要做类似的事情:
Import { UsersBlocksMyOrders } from "../pages/users/blocks/myorders";
declare module "../pages/users/blocks/myorders" {
interface UsersBlocksMyOrders {
logit(): void;
}
}
UsersBlocksMyOrders.prototype.logit = function () { console.log(this); }
但我从未尝试过相对路径,你为什么需要呢?
这是您的源代码,您可以直接在pages/users/blocks/myorders
进行更改,就像您尝试不是一个好主意一样。
答案 1 :(得分:0)
这可能会有所帮助(from here):
function extend<T, U>(first: T, second: U): T & U {
let result = <T & U>{};
for (let id in first) {
(<any>result)[id] = (<any>first)[id];
}
for (let id in second) {
if (!result.hasOwnProperty(id)) {
(<any>result)[id] = (<any>second)[id];
}
}
return result;
}
class Person {
constructor(public name: string) { }
}
interface Loggable {
log(): void;
}
class ConsoleLogger implements Loggable {
log() {
// ...
}
}
var jim = extend(new Person("Jim"), new ConsoleLogger());
var n = jim.name;
jim.log();