typescript 基础 看完即可运用自如

//类型 和 字面量
//    默认不指定类型 自动分配类型
const nub2 = 2
const  nub3: 1|2|3 = 1
let literal: 1|'df'|[1,2,3]
let cnu = [1,2,3]
let cn1:Array<number> = [2,1]
let ranVal:any = 33

//unknown 表示不知道的什么类型 要看具体的值才能确定
let ran1:unknown = 44
ran1 = 'df'
ran1 = true
if (typeof ran1 === 'string') {
  ran1.toUpperCase()
}

// void 物资不存在(变量本身不存在)  undefined  存在本身不存在 有这东西,但没有值(变量没有初始)--都表示没有
// js 没有void
// ts void 都是undefined
function printRes() :void {
  console.log('ddd')
}

// never  处理异常,程序永远不能执行完成
function throwError(msg:string,errorCode:number):never {
  throw {
    msg,errorCode
  }
}
throwError('not fond', 404)

function whileLoop():never {
  while (true) {
    console.log('hahah')
  }
}

// 枚举
enum Color {
  red = 'red',
  green = 39,
  blue = 'dd'
}

let c = Color.blue
console.log(c)

function merge(n1:number|string,n2:number|string,resultType:'as-number'|'as-string') {
  if (resultType === 'as-string') {
    return n1.toString() + n2.toString()
  }
  if (typeof n1 === 'string' || typeof n2 === 'string') {
    return n1.toString() + n2.toString()
  } else {
    return n1 + n2
  }
}

断言 另类方法重载

let duany:any
duany = 'adf'
duany.endsWith('d')

//断言的2种方式  注意断言时类型不能出错,否则可能引发系统错误
let eee = (<string>duany).endsWith('d')
let ee1 = (duany as string).endsWith('d')

//js
let llog = function (msg) {
  console.log(msg)
}

// ts 没有重载方法  表示2个参数都可以不传默认值为0,也可以 code?:number (值为undefined)
let llog2 = (msg:string=0,code:number = 0) => {
  console.log(msg,code)
}

any 灵活性   

// 如果不加any per.nickname 报错,添加any 输出为undefined
const per:any = {
  firstName: 'd',
  trName: 'b',
  age: 22
}
delete per.firstName
// 就可以和js一样添加属性
console.log(per.nickname,per['age'])

接口  和 class

//接口 _ 私有成员变量
interface Ipoint {
  // x: number,
  // y: number
  drawPoint: ()  => void
  getDistances: (p: Ipoint) => number
  //添加get set 方法  简写
  X: number
  Y: number
}

class Point implements Ipoint {
  drawPoint(): void {
    console.log(this.x,this.y)
  }

  getDistances(p: Ipoint): number {
    return Math.pow(p.x-this.x,2) + Math.pow(p.y-this.y,2);
  }

  // x: number;
  // y: number;
  // 私有化变量  只能通过get set 获取
  constructor(private x:number, private y:number = 2) {
    // this.x = x
    // this.y = y
  }
// 不能重载
  set X(v:number) {
    this.x = v
  }

  get X() {
    return this.x
  }
  set Y(v:number) {
    this.y = v
  }

  get Y() {
    return this.y
  }
}

const pte = new Point()
pte.X = 100
console.log(pte.X+pte.Y)

泛型

let lastInArray = <T>(arrc: T[]):T => {
  return arrc[arrc.length -1]
}

const ll1 = lastInArray([1,2,3])
const ll2 = lastInArray<string|number>(['1','2'])

let nakeTuple = <T, Q=number>(x:T, y:Q):[T,Q] => [x,y]
const vv1 = nakeTuple(1,'dd')
const vv2 = nakeTuple<boolean>(true,1)

模块化  只需要到处就可以了  export

感谢大家的观看,欢迎大家留言评论,不足之处还请大家见谅

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaodunmeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值