所以我有一个名为Report的基类,然后我有另一个从Report中扩展的类,叫做数据表。
我已经为Report类编写了一个扩展,我希望能够在我有一个Datasheet对象时调用它。
简单示例:
Class在一个文件中写道
export class Report {
id: number;
name: string;
}
另一个类在另一个文件中写道
export class Datasheet extends Report {
description: string;
}
在这里,我为报告类编写了一个简单的扩展,再次在另一个文件中
import { Report } from './report';
export {};
declare module './report' {
interface Report {
hasName(): boolean;
}
}
Report.prototype.hasName = function() {
return this.name == null || this.name.length > 0;
};
所以现在我创建了一个新的数据表,我想调用扩展方法.hasName()
,它可以很好地编写打字稿,但是当它被发送到浏览器时,我会收到一个错误
m.hasName不是函数
示例,我会这样做(简单示例)
const m = new Datasheet();
const check = m.hasName();
为什么我收到错误,这个编译好了?我正在使用Typescript 2.4.2。
我正在尝试编写这个,就像你可以使用C#对象一样,并编写扩展方法。这使我的物品保持干净整洁
任何帮助将不胜感激!
答案 0 :(得分:0)
您在Typescript中不需要prototype
语法,编译器会为您创建。优选地,您也不需要Object.assign
,尤其是当只使用类语法解决问题时。
这显示了如何Datasheet
扩展Report
,以便您可以致电hasName()
。
interface IReport {
hasName():boolean
}
class Report implements IReport {
id: number
name: string
hasName() {
return this.name == null || this.name.length > 0;
}
}
class Datasheet extends Report {
description: string
}
const m = new Datasheet();
const check = m.hasName();