当前位置: 代码网 > it编程>编程语言>Javascript > Ts中内置类型-上

Ts中内置类型-上

2024年07月28日 Javascript 我要评论
介绍一些ts中内置类型的实现与使用

ts

ts内置类型

具体类型

partial

作用

partial 构造一个类型 使t里的所有属性都设置可选

实现

type partial<t> = { [p in keyof t]?: t[p] | undefined; }

使用

interface exp1 {
    name: string;
    age:number;
}
type partialexp1  = partial<exp1>

partialexp1 的类型

type partialexp1 = {
    name?: string | undefined;
    age?: number | undefined;
}

required

作用

required 使t 所有属性都设为required 与partial相反

实现

type required<t> = { [p in keyof t]-?: t[p]; }

使用

interface exp2  {
    name?:string;
    age:number;
}
type requireexp2  = required<exp2>

requireexp2的类型为:

type requireexp2 = {
    name: string;
    age: number;
}

readonly

作用

readonly 将type中所有属性设置为只读

实现

type readonly<t> = { readonly [p in keyof t]: t[p]; }

使用

interface exp3 {
    name:string;
    age:number;
}
type readonlyexp3 = readonly<exp3>;

readonlyexp3:

type readonlyexp3 = {
    readonly name: string;
    readonly age: number;
}

record

作用

record<keys,t> 构造一个类型 属性键为keys 属性名位t 。可以用来规定对象的属性 名 以及值的类型

实现

type record<k extends string | number | symbol, t> = { [p in k]: t; }

使用

type exp4 = 'a'|'b'|'c'
type recordexp4  = record<exp4,number>

interface exp5{
    title:string;
}
type recordexp5=  record<exp4,exp5>

使用后类型为:

type recordexp4 = {
    a: number;
    b: number;
    c: number;
}
type recordexp5 = {
    a: exp5;
    b: exp5;
    c: exp5;
}

pick

作用

pick<type, keys> 从type中选出一组keys来构造一个类型

实现

type pick<t, k extends keyof t> = { [p in k]: t[p]; }

使用

interface exp6 {
    title:string;
    age:number;
    sex:number
}
type pickexp6 = pick<exp6,'title'|'age'>

结果为:

type pickexp6 = {
    title: string;
    age: number;
}

omit

作用

omit<type, keys> 从type中删除所有keys 来构造一个类型 与pick相反

实现

type omit<t, k extends string | number | symbol> = { [p in exclude<keyof t, k>]: t[p]; }

使用

interface exp7 {
    title: string;
    age:number;
    sex:number
}
type omitexp7  = omit<exp7,'title'>

结果为:

type omitexp7 = {
    age: number;
    sex: number;
}

exclude

作用

exclude<t,u> 从t中排除可分配给u的的类型,返回联合类型

实现

type exclude<t, u> = t extends u ? never : t

使用

type exp8 = 'title' | 'age' | 'sex';
type exp9 = 'title'|'age';
type exclude8 = exclude<exp8,exp9>

结果为

type exclude8 = "sex"

extract

作用

extract<t,u> 从t中提取可以分配给u的属性构造成一个新的联合类型 和exclude相反

实现

type extract<t, u> = t extends u ? t : never

使用

type exp10 = 'title' | 'age' | 'sex';
type exp11 = 'title'|'age';
type extractexp10 = extract<exp10,exp11>

结果为

type extractexp10 = "title" | "age"

nonnullable

作用

nonnullable 从 t中排除 null 和 underfined 来构造一个类型

实现

type nonnullable<t> = t & {}

使用

type exp12 = string|null|number|undefined;
type nonnullableexp12 = nonnullable<exp12>

结果为

type nonnullableexp12 = string | number
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com