跳到主要内容

实现 Pattern

在TypeScript中,实现一个类型Pattern,用于模式匹配或约束类型的形状,可能涉及到高级类型特性,如条件类型、映射类型和模板字面量类型等。根据具体需求,Pattern的实现可以有不同的形式。

例如,我们可以创建一个Pattern类型,用于匹配字符串模式、对象结构或者其他类型模式。

字符串匹配

type EmailPattern = `${string}@${string}.${"com" | "org" | "net"}`

对象结构模式匹配

过滤对象中,指定类型的属性key

// 使用示例
interface Person {
name: string;
age: number;
email: string;
}

type MatchPattern<T,M> = {
[K in keyof T]: T[K] extends M ? K : never
}[keyof T]

// 过滤只含有 string 类型的对象属性
type StringMatchPattern = MatchPattern<Person, string>