【TypeScript】TS类型声明(二)

2023-11-28 14:09:44 浏览数 (1)

前言

--

本文主要讲解TypeScript的基本数据结构,主要包括JS基本数据类型以及TS特有的数据类型。

  • JS基本数据类型: string、number、null、undefined、boolean、array
  • TS特有的数据类型:tuple(元祖)、enum(枚举)、any、unknow、never

注意: node 不能直接执行ts文件,需要先将ts编译成js,然后再执行js

一、 string、number、null、undefined、boolean类型声明


  • JS普通写法如下:
代码语言:javascript复制
 let myName = "zhangsan";
 let count = 1;
 let a = null;
 let b = undefined;
 let visiable = false;
  • TS写法如下: 不能更改它们的变量类型,否则会直接报错
代码语言:javascript复制
let myName: String = "zhangsan";
let count: Number = 1;
let a: null = null;
let b: undefined = undefined;
let visiable: boolean = false;
  • 错误示范:
代码语言:javascript复制
let myName: String = "zhangsan";
myName = true;//Error:Type 'true' is not assignable to type 'String'.

二、 array、tuple(元祖)


JS写法如下:

代码语言:javascript复制
 let arr = ['语文','数学']

TS声明数组有多种方式,具体如下:

(1)数组的数据类型一致

  • Array<>:声明一个数组,数组类型为<>中定义的类型,比如:Array<string>
代码语言:javascript复制
//声明一个数组,并且数组中的数据类型都是字符串
let arr:Array<string> = ['语文','数学']  
let arrA:string[] =  ['语文','数学']  
//注意:数组这样写会报错
let arr:Array= ['语文','数学']  //error
  • string[]:声明一个数组,数组类型为[]前定义的类型,比如number[]
代码语言:javascript复制
let arr:string[] = ['a']

(2)数组的数据类型不一致

  • 联合数据声明:比如(string|number)[],声明一个数组,数组类型为字符串、数字。数组中数据的类型可以不随定义的类型位置的限定。
代码语言:javascript复制
let arr:(string|number)[] = ['a',1]
let arrB:(string|number)[] = ['a',1,1,'b']
let arrC:(string|number)[] = [1,1,'b','c']
let arrC:(string|number)[] = [1,1]
//或者这样声明
let arrD: Array<string | number> = [1, 12, 'a']

(3)数组的数据类型任意

代码语言:javascript复制
let arr:any[] = ['a',1,true,null]
//或者这样声明
let arrE:Array<any> = ['a',1,true,null]

(4)限制类型和长度的元祖数组

tuple(元祖):是固定数量的不同类型的元素的组合,比如[number, string]。数组中数据的位置、类型以及个数必须要和声明的类型、声明类型的位置、声明类型的个数保持一致,否则就会报错。

代码语言:javascript复制
let tupleArr: [number, string] = [1, '数学']
let tupleArrA: [number, string] = [1, '数学',1]//error
let tupleArrA: [number, string] = ['数学',1]//error

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞