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