对TS的学习

首先TS 主要解决的是 js类型不明确的主要问题 所以我们在定义变量的时候要写出他的类型

基本数据类型说起 上代码

let b : number // 这时候 b 的变量必须是 number  不然就报错 

let isDone: boolean = false;

b = 1  // 当然你会说 是不是 还有其他的 类型 当然 js 有的类型他都有  他没有的 ts 也有

// 这样写太麻烦了 可以这样

let a : number = 1 // 这样是不是就好了 但是 还是太麻烦了 倒不如想js 那也 写 ts当然支持

let c = '1'  // 当第一次赋值为字符串的时候 再次赋值的时候必须是 字符串 
c = 2        // 这个时候就会报错了 
 
// 引用类型  两种方式都可以用  
let list: number[] = [1, 2, 3];  // 数字类型的字符串
let list: Array<string> = ['1', '2', '3'];  // 字符串类型的数组

let  p : string | number // 表示 可以在两个中选择一个 类型 

好 现在还差 对象和函数 但是说他们之前 我要先说 Any( 任何的) 和 unknown (未知的)

官网是这样说Any的: 有时候 ,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量:

let notSure: any = 4; 

notSure = "maybe a string instead"; 

notSure = false; // 当然是布尔值

那么好 我们就当他放个屁 反正也看不懂

其实Any 是表示任意数据类型 一个变量设置any后相当于 关闭了 TS的类型检测  在使用 ts的时候 不建议使用 因为 用了 就与 js 没区别  如果生命变量不赋值  那么 这个变量就是any类型

let b ; //隐式 any
let a : any ; 显示 any

这两种 情况我们要避免 (不到万不得已 不要用) 

unknown :就像所有类型都可以被归为 any,所有类型也都可以被归为 unknown。这使得 unknown 成为 TypeScript 类型系统的另一种顶级类型(另一种是 any

let value: unknown;
 
let value1: unknown = value;   // OK
let value2: any = value;       // OK
let value3: boolean = value;   // Error
let value4: number = value;    // Error
let value5: string = value;    // Error
let value6: object = value;    // Error
let value7: any[] = value;     // Error
let value8: Function = value;  // Error

unknown 类型只能被赋值给 any 类型和 unknown 类型本身。直观的说,这是有道理的:只有能够保存任意类型值的容器才能保存 unknown 类型的值。毕竟我们不知道变量 value 中存储了什么类型的值。

学艺不精看了一下别人的文章  跳转到

[译] TypeScript 3.0: unknown 类型_weixin_33716557的博客-CSDN博客原文地址:TypeScript 3.0: The unknown Type原文作者:Marius Schulz译文出自:掘金翻译计划本文永久链接:github.com/xitu/gold-m…译者:shixi-li校对者:Usey95, smilemuffieTypeScript 3.0 引入了新的unknown 类型,它是 any 类型对应的安全类型。unknown 和 a...https://blog.csdn.net/weixin_33716557/article/details/93177689

就不过多阐述了   插一嘴 记得看看 类型断言

Void类型 用来表示空 以函数为例  就表示没有返回值的函数  上         代码

never  表示 永远不会返回结果 

function fn () : void { }  // 没有返回值的函数
function  fn2 () :never {}  // 这never 就是 空都没有 undefined 都没有  用于报错 代码理解结束 没有返回值

Object 类型:

在开发时候 我们不回去 let o : object 用我引用类型都是对象 而我们想限制的则是对象中的属性  

let o : {} 这样写 就与上面的区别巨大  上代码

let b :{name:string}  // 这样 name 属性是必须额属性  对象内可以写多个 但是这个结构必须要跟 赋值的结构一模一样
b = {name:'孙悟空'}
b = {} // 这样会报错

let b :{name:string ,  age?:string}  // 那在属性后面加了? 则证明这个属性是可选的 
b = {name:'孙悟空'}
b = {name:'孙悟空' , age:'1'} // 有没有 age都可以 


let b :{name:string  ,[propName:strinbg]:any}  // 后面就可以 写无限个属性  propName只是个变量名 咋写都行  [propName:strinbg]:any 属性必须是个字符串  有多少属性我不管
 b = {name:'孙悟空' , age:'1', XXX :'XXX' ......} 无限个属性


let p : {name:'string'} & {age:'number'} // 这个 & 表示 对象内要有 name 为 string 的属性 还要有 age 为 number 的属性 



这个跟 function 是差不多的 

// 函数有两个参数(是数字)  返回值也必须是 数字  c参数 的话 type 跟对象类型的结构是 一样的 
let d : (a:number , b:number) => number 

d = function(n1,n2) {
retunr  n1+n2
}
通过 箭头函数 来设计函数的结构数据类型

Array 我们在声明数组的时候  数组里是什么类型的值

//这就表示 字符串的数组
let  e : string[] 
e = ['1','2','3']

//这就表示 数字的数组
let  e : number[] 
e = [1,2,3]

// 声明数组的第二种写法
let list: Array<number> = [1, 2, 3];

 元组 Tuple: 固定长度的数组

let h : ['string' ,'string'] // 这样的话 h 的数组必须是 两个 字符串 后面无线加

let h : ['string' ,'number'] // 这样的话 h 的数组必须是 一个是字符串  一个是数字

enum 枚举

//  定义枚举的值
enum Gender {
    Male = 0,
    female = 1
}

let i :{name:string, gender:Gender}  // 使用枚举的地方

i= {
name :"孙悟空",
gender :Gender.Male  // 进行枚举 在ts进行转化的时候 就是 0 了 
}
console.log(i.gender  === Gender.Male) 

类型的别名  比如 在代码里边看代码边说吧

let k :1|2|3|4|5
let j :1|2|3|4|5

type  MyType = 1|2|3|4|5
type  Mystring = string

let p : MyType
let l : Mystring

l = '1'

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值