当前位置: 首页 > news >正文

ts-静态类型检查,自动编译,ts类型 01

1.静态类型检查

        在代码运行前进行检查,类型检查发生在编译阶段(ts 转换为js的时候),核心目标就是在代码运行前通过类型注解,检查类型不匹配等,减少运行的时候的异常,提升代码的的可读性与维护性。

        浏览器不能直接运行ts,需要编译成js等运行环境执行。

2.自动化编译以及 tsconfig.json

创建自动化编译ts

(1) 创建ts编译控制文件--生成tsconfig.json文件

tsc --init

(2) 监视目录中.ts文件变化

tsc --watch

(3) 编译出错时不生成.js文件

tsc --noEmitOnError --watch

(4) tsconfig.json

{"compilerOptions": {"strict": true, // 启用所有严格类型检查规则(推荐)"noImplicitAny": true, // 禁止隐式 any 类型"strictNullChecks": true, // 严格校验 null/undefined"strictFunctionTypes": true, // 严格校验函数参数类型"skipLibCheck": true // 跳过第三方库的类型检查(提升编译速度)}
}

使用vue 脚手架的时候 使用ts自动 webpack来进行识别编译。

3.类型推断与类型声明

类型推断:ts根据代码,进行类型推断,也就是声明啥类型,就只能存储对应的类型

//类型声明
let a: string
let b: number
let c: boolean//限制函数的传入参数类型与参数数量
function count(x:number,y:number)
{return x+y
}//限制返回值 number
function count(x:number,y:number):number
{return x+y
}//字面量类型
let b:'hello'
b只能存hello

4.js与ts的类型

js数据类型:number string boolean null undefined bigint symbol object

ts数据类型:包含js数据类型新增6个新的类型 any unknown never void tuple enum,两个自定义类型的方式type inter-face

let str1: string //ts官方写法 基本类型
str1 ='hello'let str2:String //包装对象

5.ts类型

1.any类型(任何类型)

一旦给变量设定为any ,变量存储类型不做限定,意味放弃对变量的类型检查。

any类型的变量,可以赋值给任意类型的变量。

2.unknown类型(未知类型)

unknown含义:类型安全的any,适用于:不确定数据的类型。

unknown不能将类型unknow分配给其他类型,强制在使用前进行类型检测。

读取any类型数据的任何属性不会报错,而unknown正好相反

3.never类型(任何值都不是)

 never含义:任何值都不是,简而言之就是不能有值,undefined, null,' ',0都不行

4.void(空-函数返回值为空-可以接受undefined)

 void通常用于函数返回值的声明,含义【函数不返回任何值,调用者也不应该依赖其返回值进行任何操作

void是一个广泛的概念,用来表达'空',undefinded空的具体体现之一

5.object【存储非原始类型】

object:能存储的类型是非原始类型,原始类型有【number,string,bollean,null,undefined】

Object:除开null undefined 其他的类型都能存储。

声明对象类型-索引签名[key:string]:any

允许定义对象可以具有任意数量的属性,属性的键和类型可变,具有动态对象的属性。

let person:{name:string,age?:number,[key:string]:any
}person={name:'tom',age,gender:'string',city:'北京'}
声明函数类型-传参类型与返回值类型
let count:(a:number,b:number) => number// TS => 表示函数类型   JS => 定义函数的语法箭头函数count =function(a,b){return a+b
}
声明数组类型
let arr1:string[] //数组里面的元素是string类型
arr1=['a','b']let arr2= Array<number>//数组里面的元素是number类型---泛型
arr2=[100,200]
6.tuple-元组[特殊的数组类型]-非关键词
let arr1:[string,number]//元组
arr1 = ['100',200]let arr2:[string,boolean?]//第二个元素可写可不写
arr2 = ['100',]let arr3:[number,...string]//后续可任意多个string类型
arr3 = [100,'a','b','c']
7.enum-枚举

定义一组命名的常量,提高代码可读性与维护性

数字枚举

打印Direction 左侧为反向映射,右侧为数字枚举的递增性

enum Direction{Up,//默认从0开始 如果top=1 后续递增Down,Left,Right
}
console.log(Direction.Up)//0
console.log(Direction.[0])//top
function walk(data:Direction){if(data === Direction.Up){}if(data === Direction.Down){}if(data === Direction.Down){}if(data === Direction.Right){}
}
walk(Direction.Up)
字符串枚举-没有反向映射

enum Direction{Up = 'up',Down= 'down',Left = 'left ',Right = 'right '
}
常量枚举-特殊的枚举类型,使用const关键字定义
const enum Direction{Up = 'up',Down= 'down',Left = 'left ',Right = 'right '
}
8.type-任意类型创建别名【或 与】

联合类型-创建一个类型可以是几种不同的类型-【或者】

type Status = number | string //联合类型 一个值可以是几种不同的类型function printStatus(data:Status ):void{console.log(data)
}printStatus(404)printStatus('404')

交叉类型-多个类型合并成一个类型-【并且】

//面积
type Area = {height:number;//高width:number;//宽
}//地址
type Address = {num:number;cell:number;room:string;
}//交叉类型
type House =Area & Addressconst house:House ={height:11,width:22,num:112,cell:234,room:'702'
}
http://www.dtcms.com/a/593033.html

相关文章:

  • 文本插值,属性绑定,条件渲染,列表渲染
  • .NET周刊【11月第1期 2025-11-02】
  • C# 垃圾回收机制深度解析
  • 做微信头图的网站中国光伏企业排行榜
  • 亚马逊、Temu 自养号采购测评:从零打造安全体系
  • Mysql 5.7.26 安装
  • 【ZeroRange WebRTC】码学基础与实践:哈希、HMAC、AES、RSA/ECDSA、随机数、X.509
  • 深圳做手机网站建设中小企业网站建设多少钱
  • 【大数据技术01】数据科学的基础理论
  • 研发管理知识库(1)DevOps开发模式简介
  • 【ComfyUI/SD环境管理指南(一)】:如何避免插件安装导致的环境崩溃与快速修复
  • 深入理解 ThreadLocal、InheritableThreadLocal 与 TransmittableThreadLocal
  • 网站维护服务器广告公司叫什么名字好
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(16):文法和单词-第四课
  • 破解进入网站后台wordpress域名如何申请
  • 基于 Spring Boot 与 RabbitMQ 的分布式消息通信机制设计与实现
  • 个人网站搭建详细步骤郑州网站建设流程
  • Java 之详解字符串拼接(十四)
  • Redis集群详解
  • 6 ElasticsearchRestTemplate
  • 第3章:矢量与栅格数据模型
  • java 面试问题
  • Elasticsearch-3--什么是Lucene?
  • 01-SQL 语句的关键字顺序
  • 树莓派Raspberry Pi 5的汉化
  • 小红书推荐系统(牛客)
  • 做网站的猫腻网站的链接结构怎么做
  • 【强化学习】DQN 算法
  • 大模型-详解 Vision Transformer (ViT) (2
  • 学习react第一天