TypeScript 中的子类型化与类型差异深入解析
1. unknown 与 any 类型的差异
在 TypeScript 里, unknown 和 any 类型都能够被赋予任意值,不过在使用这两种类型的变量时存在显著差异。
-
unknown类型 :在使用其值作为特定类型(例如User)之前,必须先确认该值确实属于此类型。 -
any类型 :可以直接将其值当作任意其他类型使用,它会绕过类型检查。
其他编程语言也有不同机制来判断一个值是否属于给定类型,像 C# 有 is 关键字,Java 有 instanceof 。一般而言,当处理可能为任意类型的值时,会先将其视为顶级类型,接着进行必要检查,把它转换为所需类型。
2. 错误情况的值处理
以一个简单游戏为例,飞船可以向左( Left )或向右( Right )转向,用枚举类型表示这些方向:
enum TurnDirection {
Left,
Right
}
function turnAngle(turn: TurnDirection): number {
switch (turn)
超级会员免费看
订阅专栏 解锁全文
926

被折叠的 条评论
为什么被折叠?



