加深ts开发理解 -- 用于定义数据类型环境使用


一、为什么使用TS开发,js不足够吗

第一点知识:vscode和TypeScript是都是微软开发,维护的。市场使用人多率

TS是微软公司开发和维护的一种面向对象的编程语言。它是JS的超集,包含其他所有元素。

TypeScript完全遵循OOPS的概念,在TSC(TypeScript编译器)来解析ts文件代码转换成js文件代码

使用命令 tsc xx.ts  生成一个xx.js文件 这是node的js环境下暂时还不支持ts开发,所以只能使用编译器  12年发布,10年创建开发

1.TS基础知识

 TypeScript 它是JS的超集,他为JS代码提供了强类型语言特性。它的好处可以精确数据的类型,可以更好控制

程序的数据引用,为程序后期维护提供数据支撑,它是预编译语言,会在执行前进行编译检查,如果有错,不会进行编译。

一般是复杂项目,数据关系比较复杂的项目才会使用ts,否则就是冗余。

所有的文件必须以ts后缀(react -> tsx , vue ->script lang='ts' 或则是js文件改为ts文件)

因为ts需要编译后才能运行,所以必须安装编译环境

cnpm i -g typescript

编译文件:tsc xxx.ts 解释=> tsc typescript compile

这个使用 nodejs现在不支持ts运行,需要配置运行环境

2.语法编写

//显示数据类型定义
//1.显示数据类型定义 -->就是在声明变量后加冒号 数据类型来决定赋值
let str:string ='str'
let num:number = 1
let bool:boolean = !!1 //使用!来取反  强制转换为Boolean 
//这种定义了数据类型就是 不可以赋值为其它数据类型

//2.推导类型定义  在ts里不声明 数据类型 直接赋值就是为推导数据类型

let str0 = 'str0'   //一旦给定初始值,那么str0的数据类型就为string
//3.它的推导类型 为any(任意数据类型) => let num0 :any;
let num0
 num0 = 'num0'
 num0 ={}

//3.如果是复杂数据对象,可以用接口和类型来定义数据对象类型 
// 定义数据接口 (接口是定义规则的方法) interface  -->定义对象
interface UserInf{
  id:string;
  name:string;
  sex:number;
  age:number;
 //定义某个属性为非必须属性
  vip?:boolean;
}
let user:UserInf ={id:'',name:'',sex:1,age:18,vip:false}
//定义数据类型接口使用
user = {id:'zhangsan',name:'张三',sex:0,age:parseInt('12')}
//4.接口可以继承 数据对象
interface ZhangSan extends UserInf{
   say:()=>void;
   help:(s:string) => boolean;
}
let Zhangsan:ZhangSan = {id:'zhangsan',name:'张三',age:12,sex:1,vip:false,say:function(){
  console.log('-------在说话')
},
help:s=>{
  return s === '给钱' ? false :true
}
}
Zhangsan.help('12')
//5.定义具体的数据类型,但是数据类型没有办法继承  type具体定义声明
type UserType ={
  id:string,
  age:number,
  vip?:boolean
}
let UserInfo:UserType = {id:'王五',age:12,vip:false}
//6.如果实在不想定义数据类型直接使用any -- 不要经常使用any数据类型,否则你用ts干嘛?
let Userany:any ={id:'王五',age:12,vip:false,name:'zhangsan',sex:'男'}
userany = false
console.log(UserInfo)

3.实现总结

定义数据类型来使用,因为在组件下发传值时,需要参数数据时是变量,可能会不精确数据的传值

1.在文件夹下

mikdir ts-demo

cd ts-demo

code .

npm init -y     ==>初始化