TypeScript 使用文档(1)——变量类型规则

本文详细介绍了如何在TS中搭建开发环境,包括全局安装、类型检查、基本语法(变量和函数类型声明)、各类数据类型(如数字、字符串、布尔等),以及特殊类型如any、unknown、void、never、对象、数组、元组、枚举和类型别名的使用。
摘要由CSDN通过智能技术生成

搭建 TS 开发环境

全局安装

npm i -g typescript

检验安装是否成功

tsc

在命令行中输入tsc,回车后若出现一堆东西时,就证明是安装成功了。

image.png

TS 类型声明

  • 通过类型声明可以指定TS中变量(参数+形参)的类型
  • 指定类型后,当为变量赋值时,TS编译器会自动检查这些值是否符合类型,不符合则报错

1 基本语法

1.1 变量类型声明

// 方式一:声明一个变量 同时指定它的类型为number或boolean
let 变量名:变量类型;
变量名=变量值;

若声明赋值同时进行,ts可以自动对变量进行类型检查。

// 方式二
let 变量名:变量类型=变量值;
// 等价于
let 变量名=变量值; // TS会根据你的赋值,自动设置变量类型

1.2 函数类型声明

// 方式三
function Fn(形参1:类型,形参2:类型):返回值类型{
    ...
}

// 示例
function Fn(a:number, b:number) :number{
    return a + b
}
let result = Fn(2,3) // 此处的返回值result为number,是由function Fn():number{} 此处的number定义的
let result = Fn(2,"3") // 报错 形参类型不符合 

image.png

2 类型

类型名称示例解释备注
number1,-10,3.14任意数字
string“一段文字”字符串
booleantrue 或 false布尔值
字面量赋值本身限制变量的值就是字面表示的值,不可更改
any*任意变量不轻易使用
unknown*未知变量any的高级安全版
void空值undefined null空值函数——无返回值
never没有值不能是任何值函数——抛错
object{propname:‘data’}对象重点:如何定义不同属性情况的对象
array[1,2,3]数组重点:定义不同类型的数组
tuple[1,2]固定长度的数组
enumenmu name{a=1,b=0}枚举方便开发者观察,例(男1,女0)

2.1 基本类型

基本类型主要包括number数字、string字符串、boolean布尔值,三种类型。

以下是以number为例的基本使用示例:

// 1 声明一个变量a,同时指定他的类型为number,并赋值123
let a1:number = 123

let a2:number
a2 = 123
a2 = "123" // 报错

运算符 | 或,满足其中一个条件即可

// 2 声明一个变量a 同时指定它的类型为number或boolean
let a3: number | boolean
a3 = 123
a3 = true
a3 = null // 报错

2.2 字面量

将变量直接声明成一个基本常量,即使是同类型的其他值都不可以再次声明。

// 声明b1变量的类型为数字1
let b1:1; 
b1 = '1'; // 报错——不同类型

let b2:'hello' | 'goodbye';
b2 = 'hello'
b2 = 'nice' // 报错——虽同类型但和定义的不同:不同值

2.3 any 和 unknown

  • any 任意类型
    • 所定义的变量可以被赋值任何类型
    • 当将any定义的变量,赋值给其他变量时,其他变量会被污染,类型也变成any
  • unknown 未知类型
    • 当将unknown定义的变量,赋值给其他变量时,需要进行类型声明(类型断言),告诉解析器变量的实际类型,不然报错。
    • 类型断言的声明方式,共有两种:
      // 方式一
      变量名 as 类型
      
      // 方式二
      < 类型 > 变量名
      
【 any 】
// 相当于 let c1 定义变量时默认为any
let c1:any 
// any 不管赋什么类型的值均不报错
c1 = 123;
c1 = '123';
c1 = true;
【 unknown 】
let c2: unknown = 123
let o: number = 0

// 将c2 123 的值赋给o
// 方式一
o = c2 as number // 结果 o:number = 123
// 方式二
o = <number>c2

2.4 void 和 never

【 void 】

void 在函数中,表示返回值为空,即没有返回值 不能写return

function Fn(a:number,b:number) :void {
    无返回值的函数
    return true // 报错
}
【 never 】

never 在函数中 永远不会有返回结果。

function Fn() :never {
    throw new Error("错误")
}

2.5 object

  • object 定义的类型 可以包括{} [] function 等 ,所以重点关注如何定义,具有不同属性情况的对象。
  • { } 用来指定对象中可以包含哪些属性,语法:{属性名:属性值,属性名:属性值}
2.5.1 变量为对象 { } ——存储任意属性值
let 变量名 : { }
let d1: {}
d1 = { color: "red", num: 0.5 }
2.5.2 含有特定属性的对象 { }
let 变量名 : {属性名:属性值,... }

注意:定义的变量,里面的属性不能多、不能少,即完全要按照设定的 模板 来定义。

let d2:{ name: string, age: number }
d2 = { name: '张三', age: 18 }
d2 = { name: "张三" } // 报错
2.5.3 有固定属性+不固定属性 (但不能随意添加别的属性!)
let 变量名 : {属性名:属性值,属性名?:属性值,... }
let d3: { name: string, age?: number }
d3 = { name: "李四" } // age 可有可无
2.5.4 有固定属性+任意属性
let 变量名 : { 属性名:属性值,[ 任意字符 : string ] : any }

[ 任意字符 : string ] : any 表示任意属性:任意值

[ xxx : string ] 属性的类型为string,xxx为任意值,表示为propname

any 表示任意类型的属性值

let d4: { name: string, [xxx: string]: any }
d4 = { name: "王五", color: "yellow", life: true }

2.6 实例函数

// 必须为箭头函数!!
(形参:类型,形参:类型...)=>返回值类型 

示例:定义一个函数,要求形参有两个,且属性值必须是number,返回值也是number

// 定义基本结构
let d5: (m1: number, m2: number) => number
// 赋值函数
d5 = function (a: number, b: number): number {
  return a + b
}

2.6 array

声明数组中所有的元素均为某一种类型,声明方式:

// 方式一
类型 [ ]

// 方式二
Array<类型>
// 定义全都是字符串类型的数组
// 方式一
let e1: string[] 
e1 = ["123", "456"]
e1 = ["123", 456] // 报错

// 方式二
let e2: Array<number>
e2 = [1, 2, 3]
e2 = [1, 2, true] // 报错

2.7 元组

固定长度的数组

// 定义变量为只有两个值的数组
let f: [string, number] 
f = ["123", 123]
f = ["123"] // 报错

2.8 enum

[ 语法 ]

// 定义语法
enum 枚举名 {
    子名称=原值,
    子名称=原值,
    ...
}
// 应用语法
let 变量名:{ 属性名:枚举名 } = { 属性名:枚举名.子名称 }

使用时,不需要再设置0、1 ,直接通过枚举的方式,可以一眼就看到是男是女的信息。

// 定义枚举
enum sexEnum {
    man=1,
    woman=0
}

// 使用枚举
let g:{ name: string, sex: sexEnum }
g = { name: "张三" , sex: sexEnum.man} // sex真正存储的是0

2.9 其他:类型别名

type 名称 = 类型
type num = 1 | 2 | 3 | 4 | 5
let j: num
j = 1
j = 6 // 报错
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值