TypeScript 中 any、never、unknown、null & undefined 和 void 有什么区别?

本文介绍了TypeScript中的any、never、unknown等类型的概念及其使用场景。包括动态类型any的特点、never类型的适用情况、unknown类型的特性以及null与undefined在不同设置下的行为。此外还解释了void类型的应用。
摘要由CSDN通过智能技术生成

any : 动态的变量类型(失去了类型检查的作⽤)。 never : 永不存在的值的类型。例如:never 类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的 返回值类型。 unknown : 任何类型的值都可以赋给 unknown 类型,但是 unknown 类型的值只能赋给 unknown 本身和 any 类型。 null & undefined : 默认情况下 null 和 undefined 是所有类型的⼦类型。 就是说你可以把 null 和 undefined 赋值给 number 类型的变量。当你指定了 --strictNullChecks 标记,null 和 undefined 只能赋值给 void 和它们各⾃。 void`: 没有任何类型。例如:⼀个函数如果没有返回值,那么返回值可以定义为 void。

TypeScript 的接口(Interface)和类型别名(Type Alias)都可以用来描述一个对象的形状,定义一个对象的类型。但它们之间存在一些关键的区别: 1. 接口(Interface)是 TypeScript 的一个核心概念,用于定义对象的类型。接口可以被类实现(implements),也可以被其他接口继承(extends)。接口只能用于描述对象的形状,比如属性和方法签名。 例如: ```typescript interface IPerson { name: string; age: number; greet(phrase: string): void; } ``` 2. 类型别名(Type Alias)更像是给类型定义了一个名字,它不仅能够用于对象的形状,还可以用来描述联合类型、交叉类型、基本类型等更复杂的类型。 例如: ```typescript type Person = { name: string; age: number; }; type GreetFunction = (phrase: string) => void; ``` 类型别名还可以用于联合类型和交叉类型: ```typescript type UnionType = string | number; type IntersectionType = { name: string } & { age: number }; ``` 3. 接口(Interface)可以声明合并,如果一个接口被多次声明,那么这些声明会被合并为一个接口。而类型别名(Type Alias)不允许重复定义,如果重新声明同一个类型别名,会导致编译时错误。 4. 在使用上,如果需要提供代码的可扩展性,或者需要通过接口实现某些特定的特性(如继承),接口可能是更合适的选择。如果需要描述更复杂的类型结构,类型别名可能更加灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值