TypeScript5(类型断言|联合类型|交叉类型)

1.类型断言

当你比 TypeScript 编译器更清楚某个值的具体类型时,可以使用类型断言来"告诉"编译器。它不会执行任何运行时检查,仅仅是在编译阶段进行类型转换。

写法1:值 as 类型(推荐)

写法2:<类型>值

ts 复制代码
const getLength = (strOrArr: string | string[]): number => {
    if (typeof strOrArr === 'string') {
        // 在这个 if 块里,编译器已经知道它是 string 类型,不需要断言
        return strOrArr.length;
    } else {
        // 假设你知道它是一个数组,但为了类型安全,可以用断言
        return (strOrArr as string[]).length;
    }
}
// console.log(getLength("YaeZed"));//输出6

// console.log(getLength(["YaeZed", "YaeSakura"]));//输出2

2.联合类型

当一个变量可以是多种类型中的任意一种时,使用联合类型。这在处理可能返回不同类型值的函数或处理多种可能状态的变量时非常有用。

写法:类型 | 类型

ts 复制代码
/**
 * 联合类型
 */
let phoneNum: number | string;
// phoneNum = 1234567890;
phoneNum = '1234567890';
// console.log(phoneNum.length);//这里只在string类型时能用

/**
 * 函数使用联合类型
 */
const fn = (something: number | boolean): boolean => {
    return !!something//判断传入的是否为真值,两次非可以强转为布尔类型
}
// console.log(fn(true));

3.交叉类型

当你需要将多个类型组合成一个新类型时,使用交叉类型。新类型会拥有所有被组合类型的所有成员,就像是把它们的特性"融合"在了一起。这在组合对象类型时特别有用。

写法:类型 & 类型
举个栗子:将一个 User 接口和一个 Contact 接口合并成一个 UserContact 接口。

ts 复制代码
interface User {
  id: number;
  name: string;
}

interface Contact {
  phone: string;
  email: string;
}

// 交叉类型:新类型 UserContact 同时拥有 User 和 Contact 的所有属性
type UserContact = User & Contact;

let myProfile: UserContact = {
  id: 1,
  name: "Alice",
  phone: "123-456-7890",
  email: "alice@example.com",
};

参考文章

小满zs 学习typeScript6(类型断言|联合类型|交叉类型)xiaoman.blog.csdn.net/article/det...

相关推荐
军军君019 小时前
Three.js基础功能学习十八:智能黑板实现实例五
前端·javascript·vue.js·3d·typescript·前端框架·threejs
军军君0111 小时前
Three.js基础功能学习十四:智能黑板实现实例一
前端·javascript·css·typescript·前端框架·threejs·智能黑板
We་ct13 小时前
LeetCode 172. 阶乘后的零:从暴力到最优,拆解解题核心
开发语言·前端·javascript·算法·leetcode·typescript
军军君0113 小时前
数字孪生监控大屏实战模板:可视化数字统计展示
前端·javascript·vue.js·typescript·echarts·数字孪生·前端大屏
博主花神14 小时前
【TypeScript】梳理
javascript·ubuntu·typescript
落魄江湖行19 小时前
基础篇四 Nuxt4 全局样式与 CSS 模块
前端·css·typescript·nuxt4
浩星1 天前
electron系列2:搭建专业Electron开发环境
javascript·typescript·electron
Z_Wonderful1 天前
React react-app-env.d.ts是 TypeScript 的全局类型声明文件,它的作用
前端·react.js·typescript
落魄江湖行1 天前
基础篇二 Nuxt4 路由守卫:页面访问控制
前端·typescript·nuxt4
落魄江湖行3 天前
入门篇八 Nuxt4页面元信息与 SEO:让搜索引擎爱上你的网站
前端·typescript·seo·nuxt4