TSLint:Backbone get()在拥有模型之外调用,意思是

我使用的是微软的tslint-microsoft-contrib tslint配置,我对此非常满意。然而,有一条规则警告我我的代码。我不明白规则描述文字或我如何解决这个更优雅。TSLint:Backbone get()在拥有模型之外调用,意思是

[tslint]骨干get()方法被称为拥有模型之外: this.client.get( '位置')(无骨干-GET-设置外模型)

代码:

import * as Redis from 'ioredis'; 

import config from './config';

export class RedisWrapper {

private client: Redis.Redis

constructor(redisUrl: string) {

this.client = new Redis(redisUrl)

}

public async getLocations(): ILocation[] {

const locationsResponse: string = await this.client.get('locations')

}

}

在此行中tslint警告弹出:const locationsResponse: string = await this.client.get('locations')

问题:

本来我面临这个问题在我的项目不同的地方,我想我应该写与类型定义的包装方法,但我没能做出tslint满意,要么。有人能够启发我这个规则的意义和我如何解决它吗?

回答:

我引用HamletDRC(从Microsoft队)谁解释规则本身非常好:

无骨干-GET-设置外模型规则的要点是使 确定您不会调用 编译器无法强制执行的动态调度方法。例如,如果您输入route.params.get('id'), route.params.get('ID'),route.params.get('Id'),但只有其中的一个,编译器将不会抱怨 调用实际上将在运行时工作。设计建议是 在RouteParams 对象上定义一个静态类型的“getId():number”方法,以便编译器可以强制执行这些调用。所以,在我看来 规则确实在你的代码的问题,您应该解决(但 看到我的第二点:))

来源:https://github.com/Microsoft/tslint-microsoft-contrib/issues/123

在这种特殊情况下一个可以扩展像这样的Redis类:

export class RedisWrapper extends Redis { 

public async getLocations(): Promise<ILocation[]> {

const response: string = await this.get('locations');

if (response == null || response.length === 0) { return []; }

return <ILocation[]>JSON.parse(response);

}

}

以上是 TSLint:Backbone get()在拥有模型之外调用,意思是 的全部内容, 来源链接: utcz.com/qa/259220.html

回到顶部