typescript变量声明语法

TypeScript变量声明

基础类型变量声明

声明了一个变量,并指定该变量的类型是number类型,如果赋值不是number类型的值会红线报错

声明数字 number

let num: number
num = 11 // 正确
num = '11' // 错误,num类型是number不能赋值字符串

声明字符串 string

let str: String
str = '11'

声明布尔型 boolean

let flag: boolean
flag = false

声明任意类型 any / unknown

any
  1. any可以使用任意类型,一个类型声明为any相当于对一个变量关闭了TS类型的检查

  2. 如果声明变量的时候没有指定数据类型,则TS解析器会自动默认该数据类型为any

let any: any
any = 11
any = true
any = '11'
let test: string
testStr = any // 不会报错
unkonwn

unkonwn实际上就是一个赋值安全的any

let unknown: unknown
unknown = 11
unknown = true
unknown = '11'
let test: string
test = unknown // 会报错
// 解决报错:使用类型断言来告诉解析器这个是字符串类型
test = unknown as string // 方式1
test = <string>unknown // 方式2

any和unknown的区别:

  1. 可以将any声明的值赋值给其他变量

  2. 不能将unkown声明的值赋值给其他变量,如果尝试将unknown声明的变量赋值给其他类型的变量,赋值时会红线报错

  3. unknown声明的变量可以赋值给用any声明的变量,也可以将any声明的变量的值赋值给unknown

用于表示函数返回 void never

void
  1. 函数没有返回的时候使用 void,函数有返回值时,按照返回值类型正常设定

  2. return可以返回undefined,但能返回null

function fn():void {
  return
}
function fn():void {
  return undefined
}
function fn():void {
  return null // 报错
}
function fnNum():number {
  return 11
}
function fnStr():string {
  return '11'
}
never

永远都不会有结果返回,包括 undefined 和 null

function fnNever(): never{
  throw new Error('error')
}

基础类型变量声明——字面量

也可以通过字面量的方式来进行声明,赋值的时候需要与字面量一致,否则会红线报错

  1. 一般不会用自面量的形式进行声明,仅作了解

  2. 有一些特殊情况可以考虑使用,如声明字符串的时候(这是一个特殊例子)

声明数字

let num1: 10
num1 = 10 // 正确
// num1 = 11 // 错误

申明字符串

使用 | 来链接多个类型,在赋值时,这两个类型都可以作为值来给变量赋值

let str1: 'male' | 'female'
str1 = 'male'
str1 = 'female' 

复杂数据类型变量声明

声明一个对象 object

一般不会用object来限制一个对象,因为这样的限制太广泛了

let obj: object
let fn: object = function(): void{
  return
}
  1. 声明一个对象使用 {}

  2. 用于指定对象中可以包含哪些属性

  3. 语法:{属性名: 属性值, 属性名: 属性值}

  4. 在属性后面加?,表示可选属性

let obj1: {
  name: string
  age?: number
}
obj1 = {
  name: 'name',
  age: 11
}

注:[key: string]: any表示任意类型的属性

let obj2: {
  name: string,
  [key: string]: any
}
obj2 = {
  name: 'name',
  age: 11,
  adult: true
}

使用函数结构的类型声明 function

  1. 定义方法的参数与返回值类型

  2. 在使用对应方法的时候传入正确的值

let fn: (prop1: string, porp2: number) => string
fn = function (name: string, age: number): string{
  return name + age
}

声明一个数组 array

  1. 声明一个只能存放字符串的数组和一个只能存放数字的数组

  2. 声明数组的时候有两种方式 : string[] 或 : Array<number>

let arrStr: string[]
arrStr = ['1', '2', '3']
let arrNum: Array<number>
arrNum = [1, 2, 3]

声明一个元组 tuple —— JS没有

  1. 元组就是固定长度的数组

  2. : [string, number] 数组长度固定为2,索引1的值是string,索引2的值是number

let arr: [string, number]
arr = ['name', 11]

声明一个枚举 enum —— JS没有

  1. 定义一个枚举类型

enum Gender{
  male = 0,
  female = 1
}
let obj: {
  name: string,
  gender: Gender
}
obj = {
  name: 'name',
  gender: 1
}
console.log(obj.name + (obj.gender === Gender.male ? 'male' : 'female'))

定义类型别名

  1. 使用type定义一个可使用的类型,比如字面量

  2. 在申明一个变量的时候就可以将这个别名当类型来进行使用

type zeroToNine = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
let number: zeroToNine
number = 0
number = 10 // 错误

猜你喜欢

转载自blog.csdn.net/m0_46114541/article/details/133631339