3r-xidongdong-nestjs/typings/global.d.ts
xidongdong-153 9ac17e43e3 feat(learning): 完成NestJS核心概念和自定义提供者的学习
- 引入并配置了Fastify替代Express作为HTTP服务器,提高应用性能。
- 实现了PostController及其CRUD操作,包括请求方法和参数处理。
- 创建并使用CreatePostDto和UpdatePostDto进行请求数据验证。
- 完成了多种自定义提供者的实现和应用,如值提供者、类提供者和工厂提供者。
- 添加了一些全局类型定义,如RecordAny和BaseType,用于增强代码的可读性和健壮性。
- 通过ConfigService添加和管理新的环境配置项。
2023-11-18 23:42:29 +08:00

55 lines
1.3 KiB
TypeScript

declare type RecordAny = Record<string, any>;
declare type RecordNever = Record<never, never>;
declare type RecordAnyOrNever = RecordAny | RecordNever;
/**
* 基础类型接口
*/
declare type BaseType = boolean | number | string | undefined | null;
/**
* 环境变量类型转义函数接口
*/
declare type ParseType<T extends BaseType = string> = (value: string) => T;
/**
* 类转义为普通对象后的类型
*/
declare type ClassToPlain<T> = { [key in keyof T]: T[key] };
/**
* 一个类的类型
*/
declare type ClassType<T> = { new (...args: any[]): T };
/**
* 嵌套对象全部可选
*/
declare type RePartial<T> = {
[P in keyof T]?: T[P] extends (infer U)[] | undefined
? RePartial<U>[]
: T[P] extends object | undefined
? T[P] extends ((...args: any[]) => any) | ClassType<T[P]> | undefined
? T[P]
: RePartial<T[P]>
: T[P];
};
/**
* 嵌套对象全部必选
*/
declare type ReRequired<T> = {
[P in keyof T]-?: T[P] extends (infer U)[]
? ReRequired<U>[]
: T[P] extends ReadonlyArray<infer V>
? ReadonlyArray<ReRequired<V>>
: T[P] extends object
? ReRequired<T[P]>
: T[P];
};
/**
* 防止swc下循环依赖报错
*/
declare type WrapperType<T> = T;