[TypeScript] Typescript Intersection & Union Types
Union type: means "one of" those types
Intersection type: means "combination" of those types
Intersection types
type typeAB = typeA & typeB;
interface ErrorHandling {
success: boolean;
error?: { message: string };
}
interface ArtworksData {
artworks: { title: string }[];
}
interface ArtistsData {
artists: { name: string }[];
}
// These interfaces are composed to have
// consistent error handling, and their own data.
type ArtworksResponse = ArtworksData & ErrorHandling;
type ArtistsResponse = ArtistsData & ErrorHandling;
const handleArtistsResponse = (response: ArtistsResponse) => {
if (response.error) {
console.error(response.error.message);
return;
}
console.log(response.artists);
};
function makeWeek(): Date & { end: Date } {
const start = new Date()
const end = new Date(start.valueOf() + ONE_WEEK)
return { ...start, end } // kind of Object.assign
}
const thisWeek = makeWeek()
thisWeek.toISOString()
thisWeek.end.toISOString()
Union types
let varName = typeA | typeB;
interface Bird {
fly(): void;
layEggs(): void;
}
interface Fish {
swim(): void;
layEggs(): void;
}
declare function getSmallPet(): Fish | Bird;
let pet = getSmallPet();
pet.layEggs();
// ERROR:
// Only available in one of the two possible types
pet.swim();
分类:
TypeScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-07-19 [SAA + SAP] 05. Route 53
2019-07-19 [RxJava] Composition, Run in parallel with Schedulers.io()
2018-07-19 [Vue-rx] Cache Remote Data Requests with RxJS and Vue.js
2016-07-19 [Javascript] Use Number() to convert to Number if possilbe
2016-07-19 [Ember] Creating Your First Ember.js Project with Ember-CLI