[Typescript] Builder pattern - 02
export class BuilderTuple<TList extends any[] = []> {
list: TList;
constructor() {
this.list = [] as any;
}
push<TNum extends number>(num: TNum): BuilderTuple<[...TList, TNum]> {
this.list.push(num);
return this as any;
}
unshift<TNum extends number>(num: TNum): BuilderTuple<[TNum, ...TList]> {
this.list.unshift(num);
return this as any;
}
}
const builderBeforePush = new BuilderTuple();
const listBeforePush = builderBeforePush.list;
// ^? []
const builderAfterPush = builderBeforePush.push(1).push(2).push(3);
// ^? BuilderTuple<[1, 2, 3]>
const listAfterPush = builderAfterPush.list;
// ^? [1,2,3]
const builderAfterUnshift = builderBeforePush.unshift(1).unshift(2).unshift(3);
// ^? BuilderTuple<[3, 2, 1]>
const listAfterUnshift = builderAfterUnshift.list;
// ^? [3,2,1]
分类:
TypeScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-02-13 [Angular] Angular Elements Intro
2018-02-13 [Gatsby] Install Gatsby and Scaffold a Blog
2017-02-13 [Redux] Avoid action type naming conflicts
2017-02-13 [CSS] Get up and running with CSS Grid Layout
2017-02-13 [React] Render Basic SVG Components in React
2017-02-13 [NativeScript] Style NativeScript views using the default core theme