我正在使用TypeScript文件遇到此问题,并想知道如何解决此问题。
现在我已经压制了这个打字稿异常,但想了解如何解决这个问题。以下是我的代码:
export class BaseResult {
isSuccessful: boolean;
totalRecords: number;
successMessage: string;
reasonForFailure: string;
lastExecutedDateTime: Date;
}
export class Result<T> extends BaseResult {
data: T;
}
export class CollectionResult<T> extends BaseResult {
data: T[];
}
export class PagedCollectionResult<T> extends CollectionResult<T> {
pageNumber: number;
pageSize: number;
filter: string;
pages = function () {
return (this.totalRecords <= 0 || this.pageSize <= 0) ? 0 : Math.ceil(this.totalRecords / this.pageSize);//<--All the **this** keyword shows the error
}
}
答案 0 :(得分:15)
正如某些评论所示,您的this
引用未输入,因为您使用function () {}
语法来定义函数。此类函数中的this
对象本身应为any
类型,因为this
将是函数的调用者(在设计时不可知)。
如果您将语法更改为箭头功能,例如
pages = () => {
或者简单地省略函数关键字和箭头,例如
pages() {
然后函数内的this
对象将引用类实例this
而不是类型any
。
有关详细说明,请参阅the TypeScript handbook。
答案 1 :(得分:7)
使用显式的this
注释:pages = function(this: BaseResult) {