美文网首页
keyof 和 类型查询

keyof 和 类型查询

作者: JamesSawyer | 来源:发表于2017-10-27 00:21 被阅读229次

ts v2.1+ keyof 操作符,用于类型查询

export interface IUser {
    email: string;
    password: string;
    address: string;
    phone: string;
}

type UserProps = keyof IUser;
#1 keyof类型提示.jpg

可以看出返回一个union类型。

在写代码中,可以利用keyof对对象中的属性是否存在做出限定,即只能使用对象中的属性名

const todo = {
    id: 1,
    name: 'james',
    address: 'shisanjia' 
}

# K 将是T返回的union类型中的一种
# 并且返回值为 K[T] 类型
function prop<T, K extends keyof T>(obj: T, key: K) {
    return obj[key];
}

错误情形

const value = prop(todo, 'gender');
#2 keyof 类型限定.png

示例2 对对象数组中的对象的键值进行约束

/**
     * 对数组进行排序
     * @param arr Array<object> 对象数组
     * @param key 对象中的键值
     * @param top 取前几
     * @param order 升序或者降序 默认是降序,即从高到低
     * 示例 let arr = [{name: 'kobe', age: 19}, {name: 'james', age: 17}, {name: 'durant', age: 27}]
     * takeTop(arr, 'age', 10)
     * [{name: 'durant', age: 27}, {name: 'kobe', age: 19}, {name: 'james', age: 17}]
     */
    takeTop<T, K extends keyof T>(arr: T[], key: K, top: number, order: 'desc' | 'asc' = 'desc'): T[] {
        return take(orderBy(arr, [key], [order]), top);
    }

参考文章:

相关文章

  • keyof 和 类型查询

    ts v2.1+ keyof 操作符,用于类型查询 可以看出返回一个union类型。 在写代码中,可以利用keyo...

  • TypeScript06--高级类型(2)

    索引类型: keyof :索引类型查询操作符(返回所有的属性名) T[K]:索引访问操作符 映射类型: ...

  • TS 类型体操合集

    基本姿势 keyof keyof 返回一个类型的所有 key 的联合类型: 类型索引 类型索引可以通过 key 来...

  • T extends object + keyof 组合

    keyof 关键字 keyof 表示获取一个:类或者对象类型 或者接口类型的,所有属性名[key]组成的联合类型 ...

  • typescript 学习笔记

    keyof 的使用 typescript 的 keyof 关键字, 将一个类型映射为它所有成员名称的联合类型. t...

  • keyof

    keyof T,索引类型操作符。对于任何类型T,keyof T的结果为T上已知的公共属性名的联合。 or

  • TypeScript中的类型操作符keyof

    keyof T,索引类型操作符。对于任何类型T,keyof T的结果为T上已知的公共属性名的联合。 例子:定义一个...

  • TS中keyof的作用以及应用

    官方定义:keyof该操作符可以用于获取某种类型的所有键,其返回类型是联合类型(keyof的应用多第三方库的源码中...

  • TS高级技巧(Pick,Partial等)

    1. keyof和in 1.1 keyof keyof 与 Object.keys 略有相似,只不过 keyo...

  • typescript 入门-工具类型

    type 类型别名 keyof 对象键类型 typeof 值类型 Partial 转为可选参数 Requir...

网友评论

      本文标题:keyof 和 类型查询

      本文链接:https://www.haomeiwen.com/subject/jiilpxtx.html