TS2683(TS)'this'隐式具有类型'any',因为它没有类型注释

时间:2017-12-28 12:53:40

标签: typescript

我正在使用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
    }
}

2 个答案:

答案 0 :(得分:15)

正如某些评论所示,您的this引用未输入,因为您使用function () {}语法来定义函数。此类函数中的this对象本身应为any类型,因为this将是函数的调用者(在设计时不可知)。

如果您将语法更改为箭头功能,例如

pages = () => {

或者简单地省略函数关键字和箭头,例如

pages() {

然后函数内的this对象将引用类实例this而不是类型any

有关详细说明,请参阅the TypeScript handbook

答案 1 :(得分:7)

使用显式的this注释:pages = function(this: BaseResult) {