概述 Javascript没有强制的类型检查,不同类型的变量可以互相赋值,因此可能会引发一些因为类型匹配而发生的问题。Typescript的变量都具有类型,包括基本类型和复合类型,不同的类型之间不一…
                                                                                                                                                                                    #### 概述 
Javascript没有强制的类型检查,不同类型的变量可以互相赋值,因此可能会引发一些因为类型匹配而发生的问题。Typescript的变量都具有类型,包括基本类型和复合类型,不同的类型之间不一定兼容。
声明
要声明一个变量的类型,需要采用如下的语法:
| 1 | let a: string = 'a' | 
其中
| 1 | : string | 
表示变量
| 1 | a | 
是一个字符串类型。等号之后表达式的值必须与变量类型兼容,否则编译器会报错。
在变量初始化定义语句中,如果没有声明等号左边的变量的类型,编译器会根据等号右边变量的类型来推断等号左边变量的类型。
示例:
| 1 | let a = 'a' // a是string类型 | 
类型
Typescript的基本类型有:
string
number
boolean
symbol
null
undefined
any
unknown
never
void
string, number, boolean, symbol
| 1 | string | 
、
| 1 | number | 
、
| 1 | boolean | 
、
| 1 | symbol | 
对应Javascript中包装类
| 1 | String | 
、
| 1 | Number | 
、
| 1 | Boolean | 
、
| 1 | Symbol | 
的区别。但是前者是类型,后者本质上是构造函数。
在编程中,应始终使用前者来表示变量的类型。
null, undefined
| 1 | null | 
和
| 1 | undefined | 
被单独作为变量类型,与其它类型并不兼容。
| 1 | null | 
表示空指针,但是不能将
| 1 | null | 
理解为其它面向对象语言中未实例化的空变量。
any
当一个变量的类型是任意或无法确定时,我们可以声明它为
| 1 | any | 
类型。
| 1 | any | 
类型变量可以赋值给任意类型的变量,也可以被赋值为任意类型变量。可以读取它的任意属性(即使不存在),读取的属性也是
| 1 | any | 
类型。
编译器不会对
| 1 | any | 
类型变量做类型检查,因此有时候可能有风险,在一些语法检查工具(如ESLint)常常不允许使用
| 1 | any | 
。
示例:
| 1 | let a: any = 0 | 
unknown
为了弥补
| 1 | any | 
过于宽泛和自由的弊病,但同时有需要一种表示未知的类型,
| 1 | unknown | 
出现了。
| 1 | unknown | 
可以被赋值为任意类型的变量,但是只能赋值给
| 1 | unknown | 
或
| 1 | any | 
类型的变量,同时也不能读取它的任何属性。
示例:
| 1 | let a: unknown = 0 | 
它的作用之一是预先声明一个不确定类型的变量,等到实际使用时再转换类型。示例:
| 1 | let a: unknown // 声明 | 
也可以作为两种无法兼容的类型转换时的中间类型(这种操作可能有风险)。示例:
| 1 | let a:string = (0 as unknown) as string | 
有关类型转换的内容将在之后介绍。
never
| 1 | never | 
表示正常情况下无法到达的类型,比如抛出异常的函数:
| 1 | function error(): never { | 
void
| 1 | void | 
表示空类型,通常用在没有返回值的函数上。
示例:
| 1 | function log(arg: string): void{ | 
本文标题: Typescript小小册-基本类型
本文作者: OSChina
发布时间: 2021年04月15日 09:46
最后更新: 2025年07月13日 05:44
原始链接: https://haoxiang.eu.org/e87f58f0/
版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

