我为TypeScript中的原语创建了一个类型检查器:
type PrimitiveType = 'undefined' | 'bigint' | 'boolean' | 'function' | 'number' | 'object' | 'string' | 'symbol';
export class TypeChecker {
static isOneOf(value: unknown, ...types: (PrimitiveType|null)[]): value is PrimitiveType | null {
const allowedTypes = new Set(types);
return allowedTypes.has(typeof value) || allowedTypes.has(null) && value === null;
}
}
它可以用于:
const x: string|number|null = TypeChecker.isOneOf(value, 'string', 'number') ? value : null;
这个很好用。但是,在这种情况下,它会失败,因为编译器认为它是一个匹配:
const x: string|null = TypeChecker.isOneOf(value, 'string', 'boolean') ? value : null;
我怎样才能更新函数,使它知道我请求的类型?
我现在用的是TS 5。0.2.
1条答案
按热度按时间6vl6ewon1#