基础类型

基础类型:Boolean、Number、String、null、undefined 以及ES6的Symbol和ES10的BigInt

字符串类型

字符串是使用string定义的

const hello: string = 'hello'
const str: string = `${hello} world`

数字类型

支持十六进制、十进制、八进制和二进制

const notANumber: number = NaN // Nan
const num: number = 1 // 普通数字
const infinityNumber: number = Infinity //无穷大
const decimal: number = 10 // 十进制
const hex: number = 0x0010 // 十六进制
const binary: number = 0b0010 // 二进制
const octal: number = 0o0010 // 八进制

布尔类型

const b: boolean = new Boolean(1) // error 这样会报错 应为事实上 new Boolean() 返回的是一个 Boolean 对象
const b: Boolean = new Boolean(1)

注意,使用构造函数 Boolean 创造的对象不是布尔值

const b: boolean = true
const b2: boolean = Boolean(1)

空值类型

function voidFn(): void {
    console.log('hello world')
}

void 类型的用法,主要是用在我们不希望调用者关心函数返回值的情况下,比如通常的异步回调函数

void也可以定义undefined 和 null类型

const u: void = undefined
const n: void = null

Null和undefined类型

const u: undefined = undefined
const n: null = null
  • void 和 undefined 和 null 最大的区别

与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 string 类型的变量:

let t: void = undefined
let s: string = 'str'

// 这样写会报错 void类型不可以分给其他类型
s = t
// 这样是没问题的
let t: null = null
let s: string = 'str'

s = t

// 或者
let t: undefined = undefined
let s: string = 'str'

s = t
  • 如果你配置了tsconfig.json 开启了严格模式
{
    "compilerOptions":{
        "strict": true
    }
}

null 不能 赋予 void 类型

贡献者: mankueng