1. 基本数据类型的声明

2023-09-25 20:06:51发布
108

typescript在线编译器: https://www.typescriptlang.org/play


类型推导

ts中声明变量可以像js中那样声明,如 :

let a = 1

但是如果一开始赋值的number类型,则无法修改成其它类型。比如像下面这样修改,编译器是会报错的

let a = 1
a = '2'

编译器的报错提示:Type 'string' is not assignable to type 'number'


类型注解

一般使用ts中,不建议使用类型推导来定义变量。大多情况下,你应该使用类型注解的方式来定义变量。如:

let t1:string = 'hello world'
let t2:number = 1
let t3:boolean = false
let t4:null = null
let t5:undefined = undefined
let t6:any = 123;

或者先声明,在赋值

let a:number
a = 1


类型断言

先看一个简单的例子

const numArr = [1,2,3]
const value = numArr.find((item)=>{
    return item > 2
})
const num = value * 5;
console.log(num)

在ts环境中,这段代码会报错

const num = value * 5;

因为编译器认为,numArr调用find函数中有可能返回的是undefined,所以我们用一个有可能是undefined的变量去乘以5,则编译器会提示以下报错 :

'value' is possibly 'undefined'

所以如果你在确认find函数返回的值一定不可能是undefined的时候,我们可以使用类型断言的方式来阻止编译器报错。如下 :

const numArr = [1,2,3]
const value = numArr.find((item)=>{
    return item > 2
})
const num = value as number * 5; // 这里
console.log(num)


联合类型

如果一个变量有可能是number、string、boolean等等,则可以使用联合类型来声明变量

let num:number | string | boolean = 1
num = '1' // 对的
num = false // 对的
num = null // 错误,num的类型只能是number、string、boolean

联合类型也可以运用在定义数组

const arr: (number | string) [] = [1,2,'3']

联合类型还可以使用具体的值来声明,如 :

let num:1|'2'|false = 1 // num的值可以是1或者'2'或者false