5 Star 66 Fork 13

韩旭明 / grammarLearning

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
12_泛型_6、对象类型中的泛型.ts 1.25 KB
一键复制 编辑 原始数据 按行查看 历史
韩旭明 提交于 2023-01-27 16:33 . 修改目录
/**
* 由于泛型提供了对类型结构的复用能力,我们也经常在 对象类型 结构中使用泛型。
* 最常见的一个例子应该还是 响应类型结构 的泛型处理:
*/
interface IRes<TData = unknown> {
code: number;
error?: string;
data: TData;
}
/**
* 上面IRes接口,描述了一个通用的响应类型结构,预留出了实际响应数据的泛型坑位,
* 然后在 请求函数 中就可以传入 特定的响应类型 了:
*/
interface IUserProfileRes {
name: string;
homepage: string;
avatar: string;
}
function fetchUserProfile(): Promise<IRes<IUserProfileRes>> { return }
type StatusSucceed = boolean;
function handleOperation(): Promise<IRes<StatusSucceed>> { return }
/**
* 泛型嵌套的场景也非常常用,比如对存在分页结构的数据,也可以将其分页的响应结构抽离出来:
*/
interface IPaginationRes<TItem = unknown> {
data: TItem[];
page: number;
totalCount: number;
hasNextPage: boolean;
}
//这些结构看起来很复杂,但其实就是简单的泛型参数填充而已
function fetchUserProfileList(): Promise<IRes<IPaginationRes<IUserProfileRes>>> { return }
//export {}:解决“无法重新声明块范围变量”错误提示问题
export { }
1
https://gitee.com/hanxuming/grammar-learning.git
git@gitee.com:hanxuming/grammar-learning.git
hanxuming
grammar-learning
grammarLearning
master

搜索帮助