TypeScript条件类型是否支持AND运算符形式的逻辑判断?
TypeScript条件类型中的“AND”逻辑实现
TypeScript不支持在条件类型的extends子句中直接使用&&这类AND运算符,但你可以通过几种等价方式实现相同的逻辑与效果。
你提供的原始嵌套条件写法是完全有效的:
type TKeysofFunctionsStartingWithS<T, S extends string> = { [K in keyof T]: T[K] extends Function ? K extends `${S}${string}` ? K : never : never; }[keyof T];
如果想让逻辑更紧凑,不用嵌套? :,可以用元组匹配的技巧实现“AND”判断,写法接近你想要的形式:
type TKeysofFunctionsStartingWithS<T, S extends string> = { [K in keyof T]: [T[K] extends Function, K extends `${S}${string}`] extends [true, true] ? K : never }[keyof T];
这个写法的原理是:把两个条件的判断结果(true或false)放入元组,只有当两个条件都为true时,元组才会匹配[true, true],此时返回键名K,否则返回never。
内容的提问来源于stack exchange,提问作者degebine
相关产品推荐
相关产品推荐

