TypeScript 基本类型
00 分钟
2024-7-5
2024-7-5
type
status
date
slug
summary
tags
category
icon
password
js 定义了 8 种内置类型
  • 7 种原始类型,使用 typeof 运算符检查:
    • undefinedtypeof instance === "undefined"
    • Booleantypeof instance === "boolean"
    • Numbertypeof instance === "number"
    • Stringtypeof instance === "string
    • BigInttypeof instance === "bigint"
    • Symboltypeof instance === "symbol"
    • nulltypeof instance === "object"
  • Objecttypeof instance === "object"
TS 为内置类型提供了相应的原始类型:
numberstringbigintbooleansymbolnullundefinedobject
以及其他重要的ts类型
unknownnevervoidT[] 数组类型[T,T] 元组类型anyenum

boolean

string

number

undefined | null

默认情况下undefinednull 是所有类型的子类型,即可以赋值给任意类型。
但是当我们在tsconfig.js文件中设置 strictNullChecks 为 true 时,nullundefined只能分配给unknownany以及它们各自的类型(一个例外undefined是也可以分配给void

Object

object表示非原始类型,也就是除6种原始类型( 除 null )之外的类型。

Array 数组类型

只读数组 ReadonlyArray

ReadonlyArray是一种特殊类型,用于描述不应更改的数组。

Tuple 元组

固定数量的元素表示一个数组,这些元素的类型是已知的,但不必相同。
注意:元组类型超出其范围不能保证其类型。

只读元组 readonly[ T , T ]

any 任意类型

TypeScript第一个版本开始,就有了any类型。它代表所有可能的 JavaScript 值 — 基本类型,对象,数组,函数,Error,Symbol,以及任何你可能定义的值。
TypeScript 中,任何类型都可以被归为 any 类型。这让 any 类型成为了类型系统的 顶级类型(也被称作 全局超级类型)。

unknown

为什么typescript会出现unknown类型?

如上面介绍的any类型,如果被定义为any类型,那对于它的任何操作,TypeScript都会认为是正确的。但是这样的机制太宽松了,无法享受TypeScript的大量保护机制。但如果能有顶级类型也能默认保持安全呢?这就是会出现 unknown 的原因。

unknown的使用

就像 any一样,所有的类型都可以被归为 unknown。这使得 unknown 成为 TypeScript 类型系统的另一种顶级类型(另一种是 any)。
unknown 类型只能被赋值给 any 类型和 unknown 类型本身。
且不能对类型为unknown的值执行任何操作。
如果要使用类型为 unknown 的值,需要对其缩小类型范围才可以正常操作。

never

它是 TypeScript 中的底部类型用来表示那些永不存在的值的类型。

例如:

  • never 类型是那些总是会抛出异常或根本就不会有返回值的函数。
  • 永远不可能存在的情况
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never

never 使用场景

void

JavaScriptvoid 是一个运算符。用于计算它旁边的表达式。无论是那个表达式,void总是返回undefined
TypeScriptvoid 表示一种类型。 表示没有任何类型, 一般用于函数返回值:
nullundefined 是所有类型的子类型, 所以也可以将 nullundefined 赋值给void

类型断言

类型断言可以用来手动指定一个值的类型。断言相当于是告诉编译器“相信我,我知道它现在是什么类型”。

语法

使用场景

限制

  • 任何类型( 包括 never )都可以被断言为 anyany也可以被断言成任何类型
    • 联合类型可以被断言为其中一个类型,或者是 TypeScript 的两个顶级类型any unknown

    多重断言

    非空断言(后缀 !)

    x! 表示排除 x 值类型中的nullundefined

    字面量类型

    TypeScript中可以使用 stringnumberboolean 创建一个字面量类型。

    模板字面量 TS 4.1新增

    函数类型

    函数申明

    JavaScript 中,有两种常见的定义函数的方式——函数声明和函数表达式

    函数定义类型

    TypeScript 中为函数定义类型,需要将输入和输出都考虑进去。

    可选参数

    使用?表示当前参数为可选参数,可选参数后面不允许再出现必需参数

    函数重载

    函数重载或方法重载是使用相同名称和不同参数数量或类型创建多个方法的一种能力。
    但是 JavaScript 无法实现重载,因为函数重载需要通过函数名称+参数判断是否是同一函数,而在javaScript当中,参数不是必须的,它只是为我们提供方便。
    TypeScript 支持函数重载,但因为TypeScriptJavaScript的超集,再者TypeScript的设计原则就是不讲类型带到运行时,所以TypeScript的重载只是类型重载。
    TypeScript 允许定义重载函数类型,采多连续多个重载声明 + 一个函数实现的方式来实现。比如:
    TypeScript 在检查一个函数重载的返回值与其实现函数的返回值是否兼容:
    • 如果函数重载无返回值,兼容。
    • 如果函数重载的返回值是函数实现的返回值的子集
    • 如果函数重载的返回值是函数实现的返回值的超集

    使用场景

     
    上一篇
    TypeScript 高级类型
    下一篇
    Chrome插件仓库模板