TypeScrip4

联合类型

// 这样是联合类型,既可以是数字类型也可以是字符串类型
let number: string | number = '1234'


// 这样写会报错
let bool: string | number = true

函数使用联合类型

const fn = (val:number | boolean):boolean => {
   return !!val
}

交叉类型

// 多种类型的集合,联合对象将具有所联合类型的所有成员
interface People {
  age: number,
  height: number
}
interface Person{
  sex: string
}
const fn= (man: People & Person) => {
  console.log(man.age)
  console.log(man.height)
  console.log(man.sex)
}
fn({age: 18,height: 180,sex: 'man'});

类型断言

语法:  值 as 类型  或  <类型>值  

需要注意的是,类型断言只能够「欺骗」TypeScript 编译器,无法避免运行时的错误,反而滥用类型断言可能会导致运行时错误:

// 这样写是有警告的应为B的接口上面是没有定义run这个属性的
interface A {
       run: string
}
 
interface B {
       build: string
}
 
const fn = (type: A | B): string => {
       return type.run
}


// 可以使用类型断言来推断他传入的是A接口的值
interface A {
       run: string
}
 
interface B {
       build: string
}
 
const fn = (type: A | B): string => {
       return (type as A).run
}

Class类

TS 是如何定义类的

// 这样写会报错
class Person{
   constructor(name,age){
      this.name = name
   }
}

// TypeScript是不允许直接在constructor 定义变量的 需要在constructor上面先声明
class Person{
   name: string
   age: number
   constructor(name,age){
      this.name = name
   }
}
// 这样也会有问题,因为age属性没用上
// 如果了定义了变量不用 也会报错 通常是给个默认值 或者 进行赋值
class Person{
   name: string
   age: number = 18
   constructor(name,age){
      this.name = name
   }
}

// 完整写法
class Person{
   name: string
   age: number
   constructor(name,age){
      this.name = name
      this.age = age
   }
   run() {
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值