TS从入门到精通(一)基本类型与任意类型

195 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

(基础类型与任意类型)

TypeScript 简称ts 是javascript的超集

js本身是一门弱类型的语言;变量可以存储任意类型的数据;为了使js更加规范并且减少维护成本,微软推出了TypeScriptjavaScript 配合使用,使变量更加可控。同时使js更加规范。如果你学习过java C等语言那么上手将非常快速。

安装TypeScript

npm i typescript -g
tsc -v            //检查安装是否成功
tsc  XXX.ts             //编译命令将ts文件编译成js文件 

简化运行步骤。不会进行编译直接运行ts文件

npm i -g ts-node 
ts-node -v             //查看安装版本

TypeScript 基础类型

基础类型:BooleanNumberStringnullundefined 以及 ES6 的  Symbol和 ES10 的 BigInt

语法 在变量名后面加上:类型 加上类型之后就只能赋同类型的值

let str:string="这是字符串类型"let num:number="这是数字类型"let flag:boolean="这是布尔类型"let nul:null=nulllet u:undefined=undefinedlet sy:symble=symble(1);
let bi:bigint=100n//空值类型 void  JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 `void` 表示没有任何返回值的函数 主要是用到函数上
function voidFn(): void {
    console.log('test void')
}

与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 string 类型的变量:

TIP:

如果在ts配置文件中开启了严格模式那么null 不能赋值给void 类型

任意类型

Any 类型 和 unknown 顶级类型

好处 :没有强制限定哪种类型,随时切换类型都可以 我们可以对 any 进行任何操作,不需要检查类型

缺陷:如果使用any 就失去了TS类型检测的作用,相当于没用ts显然是不符合开发的初衷。在特殊场景下依然会使用

  1. 声明变量的时候没有指定任意类型默认为any
    let num ;
    num //any 默认any
    
  2. unknown 类型与 any 一样,所有类型都可以分配给unknown,unknow类型比any更加严格当你要使用any 的时候可以尝试使用unknow
     //这样写会报错unknow类型不能作为子类型只能作为父类型 any可以作为父类型和子类型
     //unknown类型不能赋值给其他类型
     let names:unknown = 'TiGA'
     let names2:string = names
     
     //any类型是可以作为子类型
     let names:any = '123'
     let names2:string = names
       
     //unknown可赋值对象只有unknown 和 any
     let b:unknown = '123'
     let a:any= '456'
     a=b
    

如果是any类型在对象没有这个属性的时候还在获取是不会报错的

 let obj:any = {name:"TiGa"}
 obj.a 

如果是unknow 是不能调用属性和方法

let obj:unknown = {name:"TiGA",play:():void=>console.log('打怪兽')}
obj.b
obj.ccc()