Skip to content

ValidPath

自 1.1.0 起

检查路径是否存在于类型中。

签名

typescript
type ValidPath<T, P extends string> = T extends Primitive
  ? P extends ''
    ? true
    : false
  : P extends ''
    ? true
    : P extends `${infer K}.${infer Rest}`
      ? K extends keyof T
        ? ValidPath<T[K], Rest>
        : false
      : P extends keyof T
        ? true
        : false

参数

参数描述
T对象类型
P要检查的路径

描述

如果路径存在于类型中返回 true,否则返回 false

示例

基本用法

typescript
import type { ValidPath } from 'uni-types'

interface Obj {
  a: {
    b: string
    c: {
      d: number
    }
  }
}

type Path1 = ValidPath<Obj, 'a.b'>    // true
type Path2 = ValidPath<Obj, 'a.c.d'>  // true
type Path3 = ValidPath<Obj, 'a.x'>    // false
type Path4 = ValidPath<Obj, ''>       // true(根路径)

条件类型

typescript
type SafePath<T, P extends string> = ValidPath<T, P> extends true
  ? P
  : never

相关

基于 MIT 许可发布