TypeScript---ts数据类型、变量、知识点、运算符总结

一、TS基础类型

1.JS已有类型

  • 原始类型:number/string/boolean/null/undefined/symbol
  • 对象类型:object(包括数组,对象,函数等对象)

2.TS新增类型

  • 联合类型、自定义类型(类型别名)、接口、元组、字面量类型、枚举、void、any等

数据类型

取值

举例

boolean

布尔值,true/false

let flag:boolean=true

number

数字,双精度 64 位浮点值。如12,1.37,0b1010,0o12,0xa

let a:number=0xa

string

字符串,如"abc",'abc'

使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式

let name:string="Lisa"

let str:string=`我是${username}}`

undefined

默认情况下 null 和 undefined 是所有类型的子类型,比如说可以把 null 和 undefined 赋值给 number 类型的变量;null表示对象值缺失,undefined用于初始化变量为一个未定义的值。

let u:undefined=undefined

null

let n:null=null

array

数组

let list1:number[]=[1,2,3]

let list2:Array<number>=[1,2,3]

object

表示非原始类型,也就是除 number,string,boolean之外的类型

obj:object

tuple

元组,确切地知道包含多少个元素,以及每个索引对应的元素类型

let t1:[string,number]

t1 =['hi',12]

enum

枚举,用于定义数值集合。enum 类型是对 JavaScript 标准数据类型的一个补充

enum Color { Red, Green, Blue }

let myColor: Color = Color.Green// 1

console.log(myColor, Color.Red, Color.Blue)  //1 0 2

any

任意数据类型,可以赋予任意类型的值。

let a: any = 1

a = "哈哈"

a = false

void

与 any 类型相反,它表示没有任何类型。用于标识方法返回值的类型,表示该方法没有返回值。

声明一个 void 类型的变量没有什么大用,因为只能为它赋予 undefined 

never

是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)

任何类型都不能赋值给 never 类型的变量

let x: never;

x = (()=>{ throw new Error('exception')})();

联合类型

联合类型,例如number | string

x:number|string

类型断言

类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。

方式一: <类型>值

方式二: 值 as 类型 tsx中只能用这种方式

注意:类型断言只是欺骗编译器,让编译器可以编译通过,但是如果强制类型转换,在执行的过程中会报错

if((<string>x).length){

return(x asstring).length

}else{

return x.toString().length

}

const aLink = document.getElementById('link') as HTMLAnchorElement

获取元素类型的方法:开发者工具打开,选择元素,在控制台输入console.dir($0)可获取选中元素的类型,拉到打印内容最后一行

类型推断

TS会在没有明确的指定类型的时候推测出一个类型.

1. 定义变量时赋值了, 推断为对应的类型. 2. 定义变量时没有赋值, 推断为any类型 3.函数返回值类型可以省略

unknown
可以被任何类型赋值,但是不能赋值给任何类型。

当我们真的不知道类型是什么时,可以使用unknown做处理

unknown 类型也被认为是 top type ,但它更安全。与 any 一样,所有类型都可以分配给unknown

let value : unknown;

value=true;

value=12

value="jim"

let a:boolean=value(这句报错Error)

类型别名

使用type关键字给对象定义类型

type CustomArray = (number | string)[]

let arr1: CustomArray = [1, 'a', 2]

字面量类型可以使用变量值作为类型

let str1 = 'Hello TS'

const str2 = 'Hello TS'//str2变量的类型为Hello Ts,可以使用数值作为类型,称为字面量类型

let age1: 18 = 18

function changeDirection(direction: 'up' | 'down' | 'left' | 'right') {

    console.log(direction);

}

changeDirection('down')

let num: number = 1;
// num="a"  //error TS2322: Type 'string' is not assignable to type 'number'.
console.log(num)
//ts执行的两种方式
// (1)执行 tsc XX.ts命令,由ts=>js;node XX.js
//(2)npm i -g ts-node;ts-node XX.ts
let a: number = 0xa
let username: string = "maidu_xbd"
let str: string = `我是${username}}`
let flag: boolean = true
let u: undefined = undefined
let n: null = null
let s: symbol = Symbol()

// 数组array
let list1: number[] = [1, 2, 3]
let list2: Array<number> = [1, 2, 3]
let list3: string[] = ["1", "3"]
//联合类型
let list4: (number | string)[] = [1, "a", 4, "m"]//()一定要有
let list5: number | string[] = 1
let list6: number | string[] = ['a', 'm']
//类型别名,使用type关键字
type CustomArray = (number | string)[]
let arr1: CustomArray = [1, 'a', 2]
//元组tuple-确切地知道包含多少个元素,以及每个索引对应的信息。
let t1: [string, number]
t1 = ['hi', 12]

//类型推断
// 1. 定义变量时赋值了, 推断为对应的类型.
// 2. 定义变量时没有赋值, 推断为any类型
//3.函数返回值类型可以省略
let age = 22
let a1
a1 = 12
a1 = "hello"

二、TS变量

变量是一种使用方便的占位符,用于引用计算机内存地址。我们可以把变量看做存储数据的容器。

2.1变量声明

声明变量的四种方式

举例

声明变量的类型及初始值

var [变量名] : [类型] = 值;

var str:string="hi"

声明变量的类型,但没有初始值,变量值会设置为 undefined

var [变量名] : [类型];

var str:string

声明变量并初始值,但不设置类型,该变量可以是任意类型

var [变量名] = 值;

var str="123"

声明变量没有设置类型和初始值,类型可以是任意类型,默认初始值为 undefined

var [变量名];

var str

2.2 变量作用域

变量作用域

说明

全局作用域

全局变量定义在程序结构的外部,可在代码的任何位置使用。

类作用域 

 这个变量也可以称为 字段。类变量声明在一个类里头,但在类的方法外面。 该变量可以通过类的对象来访问。

类变量也可以是静态的,静态的变量可以通过类名直接访问。

局部作用域

局部变量,局部变量只能在声明它的一个代码块(如:方法)中使用

三、运算符

运算符用于执行程序代码运算

分类

运算符

说明

算数运算符(7类)

+ 、-、 * 、/ 、% 、++ 、--

y=x++,先将x值赋值给y,再执行x+1;

y=++x,先执行x+1,再赋值给y

关系运算符(6类)

==、!=、>、<、>=、<=

运算结果为true或false

逻辑运算符(3类)

&&、||、!

运算结果为true或false

&&假前真后,||真前假后

位运算符(7类)

&、|、~(取反)、^(异或)、<<、>>、>>>(无符号右移)

位操作是程序设计中对位模式按位或二进制数的一元和二元操作

赋值运算符(5类)

=、+=、-=、*=、/=

赋值运算符用于给变量赋值

三元运算符

?

Test ? expr1 : expr2

如果条件语句 Test 返回 true,返回expr1,否则返回expr2

字符串运算符

+(连接运算符)

+ 运算符可以拼接两个字符串

负号运算符

-

更改操作数的符号

类型运算符

typeof 、instanceof

typeof 是一元运算符,返回操作数的数据类型。

instanceof 运算符用于判断对象是否为指定的类型

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值