ts 使用泛型来做类型映射

使用泛型来做类型映射,将对象(或数组)中类型转换为另一个类型

首先,定义一个类型Student

	// 定义一个类型`Student`
	interface Student {
		name: string,
		age: number
	}

1、把Student的所有属性都变为可空的

	type Nullable<T> = {
		[p in keyof T]: T[p] || null
	}
	
	type NullAbleStudent = Nullable<Student>

2、把Student的所有属性都变为只读的

	type Readonly<T> = {
		readonly [P in keyof T]: T[p]
	}
	
	type ReadonlyStudent = Readonly<Student>

3、把Student的属性都变成可选的

	type Partical<T> = {
		[P in keyof T]?: T[P]	
	}
	
	type ParticalStudent = Partical<Student>

把属性都变成Promise

	type ToPromise<T> = {
		[P in keyof T]: Promise<T[P]>
	}
	
	type Coordinate = [number, number]
	
	type PromiseCoordinate = ToPromise<Coordinate> // [Promise, Promise]




function toRefs<T extends object> (object: T): {
  [K in keyof T]: ToRef<T[K]>
}

`function toRefs` 这是一个泛型函数,它接受一个类型为 object 的参数 object,并且返回一个新的对象。

`: { [K in keyof T]: ToRef }` 这是函数的返回类型,
它使用了 TypeScript 中的映射类型,遍历了输入对象 T 的所有属性,并将它们的类型转换为 ToRef<T[K]>,
这里的 ToRef 是一个类型,它表示将普通值转换为 ref 对象的类型。

你可能感兴趣的:(typeScript,typescript)