TypeScript内置类型一览(Record<string,any>等等)(上)

简介: TypeScript内置类型一览(Record<string,any>等等)

TypeScript中Record是啥?现在让我们来了解一下TypeScript官方的内置类型,让你的开发效率再上一层楼

Partial(部分的)

/**
 * Make all properties in T optional
 */
type Partial<T> = {
    [P in keyof T]?: T[P];
};

作用是让传入类型中的所有属性变成都是可选的

使用举例
export interface Student {
  name: string;
  age: number;
}

const student1: Student = {}

const student2: Partial = {}




变量student1的类型是Student,Student默认所有的属性都是不能为空的,所有会报错,student2就不会

Required(必须的)

/**

Make all properties in T required

*/

type Required = {

[P in keyof T]-?: T[P];

};

跟Partial的作用是相反的,是让传入类型中的所有属性变成都是必填的

使用举例
export interface Student {

name?: string;

age?: number;

}

const student1: Student = {}

const student2: Required = {}



变量student1的类型是Student,Student默认所有的属性都是可以为空的,所有不会报错,student2会报错

Readonly(只读的)

/**

Make all properties in T readonly

*/

type Readonly = {

readonly [P in keyof T]: T[P];

};

作用是让传入类型中的所有属性变成都是只读的(不能修改属性)

使用举例
export interface Student {

name: string;

age: number;

}

const student1: Student = {

name: ‘张三’,

age: 20

}

student1.age = 21


const student2: Readonly = {

name: ‘李四’,

age: 20

}

student2.age = 21


给student1的属性age重新赋值不会报错,给student2的属性age重新赋值就会报错,因为student2所有的属性都是只读的

Pick(选择)

/**

From T, pick a set of properties whose keys are in the union K

*/

type Pick = {

[P in K]: T[P];

};

作用是选择传入类型中的部分属性组成新类型


使用举例

export interface Student {

name: string;

age: number;

}

const student1: Student = {

name: ‘张三’,

age: 20

}


const student2: Pick = {

name: ‘李四’

}


const student3: Pick = {

name: ‘王五’,

age: 20

}


变量student1可以有所有属性name和age,变量student2就只能有属性name,变量student3加上属性age就会报错

Record(记录)

/**

Construct a type with a set of properties K of type T

/

type Record = {

[P in K]: T;

};

作用是构建一个类型,这个类型用来描述一个对象,这个对象的属性都具有相同的类型


使用举例

export const student1: Record<string, any> = {

name: ‘张三’,

age: 20

}

Record应该是日常使用频率较高的内置类型了,主要用来描述对象,一般建议是不用Object来描述对象,而是用Record代替,Record几乎可以说是万金油了

Exclude(排除)

/*

Exclude from T those types that are assignable to U

*/

type Exclude = T extends U ? never : T;

针对联合类型(interface这种没用),用人话说,排除相同的,留下不同的


使用举例

export type PersonAttr = ‘name’ | ‘age’

export type StudentAttr = ‘name’ | ‘age’ | ‘class’ | ‘school’

const student1: Exclude



student1就只能被赋值为’class’ 或者’school’

Extract(取出)

/**

Extract from T those types that are assignable to U

*/

type Extract = T extends U ? T : never;

与Exclude相反,针对联合类型,排除不同的的,取出相同的


使用举例

export type PersonAttr = ‘name’ | ‘age’

export type StudentAttr = ‘name’ | ‘age’ | ‘class’ | ‘school’

const student1: Extract


student1就只能被赋值为’name’或者’age’

TypeScript内置类型一览(Record<string,any>等等)(中):https://developer.aliyun.com/article/1510476

相关文章
|
11天前
|
JavaScript 前端开发 Java
TypeScript 类型兼容性
TypeScript 类型兼容性
|
5天前
|
前端开发 JavaScript 安全
TypeScript作为一种静态类型的JavaScript超集,其强大的类型系统和面向对象编程特性为微前端架构的实现提供了有力的支持
【6月更文挑战第11天】微前端架构借助TypeScript提升开发效率和代码可靠性。 TypeScript提供类型安全,防止微前端间通信出错;智能提示和自动补全加速跨代码库开发;重构支持简化代码更新。通过定义公共接口确保一致性,用TypeScript编写微前端以保证质量。集成到构建流程确保顺利构建打包。在微前端场景中,TypeScript是强有力的语言选择。
23 2
|
6天前
|
Java
Java中判断String类型为空和null的方法
Java中判断`String`变量是否为空或`null`需用`== null`和`.isEmpty()`。示例代码提供两种方法:`main`方法直接判断,`safeGetString`方法提供默认值。当输入为`null`或空时,返回默认值。代码包含三个测试案例,分别处理`null`、空字符串和非空非`null`字符串。
21 0
|
7天前
|
JavaScript 前端开发 安全
TypeScript:静态类型的动态语言
【6月更文挑战第9天】TypeScript是JavaScript的静态类型超集,解决JS类型安全问题,提供更强的代码组织和维护。它引入静态类型、接口和类,增强类型安全,减少运行时错误。TS与JS无缝集成,兼容现有库和框架,拥有丰富的开发工具和活跃社区。广泛应用在各种规模项目中,尤其提升复杂前端应用的代码质量。学习TypeScript对提升开发效率和代码可靠性极具价值。
20 10
|
11天前
|
JavaScript 算法
TypeScript 类型推论
TypeScript 类型推论
|
11天前
|
JavaScript
TypeScript 泛型类型
TypeScript 泛型类型
|
11天前
|
JavaScript 前端开发 编译器
typescript 推断类型
typescript 推断类型
|
11天前
|
JavaScript 前端开发
typescript 混合类型
typescript 混合类型
|
11天前
|
JavaScript Java C#
typescript 类类型
typescript 类类型
|
11天前
|
JavaScript 前端开发 索引
typescript 可索引的类型
typescript 可索引的类型