【发布时间】:2020-06-05 04:39:00
【问题描述】:
我正在使用 typescript-eslint v3.1.0 并且在 TypeScript 中具有以下类型保护功能:
interface JWTPayload {
sub: number;
}
function isJWTPayload(obj: unknown): obj is JWTPayload {
if (typeof obj !== 'object') {
return false;
}
// eslint-disable-next-line @typescript-eslint/ban-types
const obj2 = obj as object;
if (!('sub' in obj2)) {
return false;
}
const obj3 = obj2 as JWTPayload;
if (!Number.isInteger(obj3.sub)) {
return false;
}
return true;
}
我的问题是:在我想象的常见情况下禁用 lint 规则感觉不好。有没有可以避免这种情况的 TypeScript 模式?
一些背景:
正在被禁用的 typescript-eslint 规则是在 https://github.com/typescript-eslint/typescript-eslint/pull/848 中引入的,其中认为“99.9% 的情况下,您不想使用 [“object” 类型],而广大大多数代码库都不想使用它”。他们为什么会这样说?似乎每当您验证用户输入时都会使用它。有没有其他方法可以在不强制转换为“任何”的情况下做到这一点?
【问题讨论】:
标签: typescript eslint