Typescript 学习之路

Typescript

TypeScript,简称 ts,是微软开发的一种静态的编程语言,它是 JavaScript 的超集
1.简单来说,js 有的 ts 都有,所有js 代码都可以在 ts 里面运行。
2.ts 支持类型支持,ts = type +JavaScript。
那么 ts 和 js 有什么区别呢?
1.JavaScript 属于动态编程语言,而ts 属于静态编程语言。
2.js:边解释边执行,错误只有在运行的时候才能发现
3.ts:先编译再执行,在写的时候就会发现错误了(ts不能直接执行,需要先编译成 js )
4.ts 完全支持 js ,可以直接转换

TS用法:代码例子说明


//单属性
let a:Number=18
let b:symbol=Symbol()
console.log(b,"asdasd");
let c:number=15

//单属性多类型
let timer:null|number=null
type s =string
const ss:s='abc'

//数组两种方式
let numArr:number[]=[1,2,3]
let strArr:Array<string>=['1','2','3']


//函数
function add(a:string,b:number):any{
    return a+b
}
//箭头函数
const fun=(a:number=1,b:number=1):any=>{
    return a+b
}
fun(1,1)
//函数简写
type Fn=(ni:number,n2:number)=>number
const fun3:Fn=(a,b)=>{
    return a+b
}


//void类型(三种情况:1,函数没写return。2,只写了return,没有具体得返回值。3,return得是undefined)
function fun4(a:string){
    console.log(a)
}
//1, 什么都不写  函数得返回值为void
const fun5=()=>{}
//2,只写return其他什么都不写  函数返回值为void
const fun6=():void=>{
    return
}
//3,返回undefined 函数的返回之为void
//如第三种情况  不能直接指明返回之:undefined  这样写会报错
const fun7=():void=>{
    return undefined
}

//像直接指明返回值为void的话与上面不定情况返回之类型相同
const funS=():void=>{}



//可选参数
function fun8( a?:number,b?:number){
    console.log(111);  
}
function fun88( a:number,b:number){
    console.log(111);  
}
fun8()
fun8(1,2)
fun8(1,2)


// 对象   
// const 对象名: {
//     属性名1:类型1,
//     属性名2?:类型2,
//     方法名1(形参1: 类型1,形参2: 类型2): 返回值类型,
//     方法名2:(形参1: 类型1,形参2: 类型2) => 返回值类型
//   } = { 属性名1: 值1,属性名2:值2  }
  
//l类型别名Type

type obj={
    a:string,
    b?:number,
    fun10():void
}
let obj1:obj={
    a:'1',
    b:18,
    fun10(){}
}

//两种形式描述对象 1:类型别名 type   2:接口 interface

//interface声明接口
interface obj2{
    name:string,
    price:number,
    fun11:()=>string
}
//利用声明得接口名称作为变量的名称
const good1:obj2={
    name:'1',
    price:200,
    fun11:function(){
        return '1'
    }

}
const good2:obj2={
    name:'1',
    price:200,
    fun11:function(){
        return '1'
    }

}


//接口类型interface和类型别名type对比
//相同点:都可以给对象指定类型
//不同点:1,接口只能给对象指定类型(可以继承)2,类型别名,不仅可以给对象指定类型,实际上可以为(任意类型)指定别名
//先又得interface后有得type推荐使用type

//写法   接口得写法
interface Person1{
    name:string,
    age:number,
}
const user1:Person1={
    name:'1',
    age:12
}

//写法 类型别名
type Person2={
    name:string,
    age:number
}
const user2:Person2={
    name:'1',
    age:12
}

//接口得继承
//注意:在日常开发中   如果两个接口之间又相同得属性或者方法,可以将(公共得属性或者方法抽离出来,通过继承extends实现复用)语法:
 interface obj3{
    a:number,
    b:number,
 }
//  interface obj4{
//      a:number,
//      b:number,
//      c:number
//  }

//obj4利用继承

interface obj4 extends obj3{
    c:number
}//这样obj4就用了obj3得属性或者方法(obj4用 a b c 三个属性)





//元组:特殊得数组(特殊 1,约定了元素的个数 2,约定了特定索引对应的数据类型)

//例,react中的useState
function useState(n:number):[number,(number)=>void]{
    const setN=(n1)=>{
        n=n1
    }
    return [n,setN]
}
const [num,setNum]=useState(10)


//字面量声明
let str1='holle Ts'  //str1的类型是string
const str2="holle Ts" //str2的类型是'hello Ts'
//str1用let声明它的值可以是任意的字符串所以类型为string
//str2用const声明,它的值不能在变化所以只能是'hello Ts',因此他的类型是'hello Ts'(字面量类型)也就是说某个特定的字符串也可以作为 TS 中的类型
//字面量类型一般和联合类型一起使用
type aaa='a'|'b'
let ga:aaa='a'
let ga2:aaa='b'
// let ga3:aaa='c' 错误

//enum 枚举:功能类似于 字面量类型+联合类型组合的功能 来描述一个值,该值只能是 一组命名常量 中的一个。 在没有 type 的时候,大家都是用枚举比较多的,现在比较少了。
//定义 (1,一般枚举名称以大写字母开头 2,枚举中的多个值之间通过,(逗号)分隔 3,定义好枚举后,直接使用枚举名称作位类型注解)
enum Dir{a,b,c,d}
//使用
Dir.a
Dir.b
Dir.c
Dir.d

//枚举也分数值枚举 和 字符串枚举。 数值枚举: 默认情况下,枚举的值是数值。默认为:从 0 开始自增的数值 当然,也可以给枚举中的成员初始化值
//数值枚举
enum DDR{a=10,b,c,d}
DDR.a//10
DDR.b//11
DDR.c//12
DDR.d//13

enum DDR2{a=1,b=2,c=3,d=4}

//字符串枚举 (注意:字符串枚举是没有自然增长的行为,因此字符串枚举的每个成员必须要有初始值)
enum DDRR{a='1',b='2',c='3',d='4'}

//any 任意类型   设置后相当于取消了类型的限制
let obj5:any={a:0}
obj5.b=100
obj5()

const n:number=obj5
//any类型使用场景,1,例如,console.log() ; 定义一个函数,输入任意类型的数据,返回该数据类型   2,临时使用 any 来“避免”书写很长、很复杂的类型
//还有一种隐式any 触发条件1,声明变量不提供类型也不提供默认值 2,定义函数时,参数不给类型
//当然不推荐使用any 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
转载原文:https://juejin.cn/post/7092415149809598500#heading-13

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值