ts用法

interface 中定义函数的三种方法

interface Person {
  readonly name: string,
  say?: {(a: string): string},
  run?(a: string): boolean,
  eat?: (a: string) => string,
}

断言、双重断言

有相同属性的可以断言

interface Person {
  name: string,
}

interface Dog {
  nickname: string,
  age: number,
}

interface Cat {
  nickname: string,
}

const c1: Cat = {
  nickname: 'cc1',
}

console.log(c1 as Dog) // 这个没有问题
console.log(c1 as Person) // 这个会报错
// 类型 "Cat" 到类型 "Person" 的转换可能是错误的,因为两种类型不能充分重叠。
// 如果这是有意的,请先将表达式转换为 "unknown"
// 下面是可以的
console.log(c1 as unknown)
console.log(c1 as any)
console.log(c1 as unknown as Person)
console.log(c1 as any as Person)

泛型&泛型约束

interface CreateSomeOne<T> {
  (a: T): T,
}

interface Lengthwise {
  age: number;
}

function createSomeOne<T extends Lengthwise>(a: T, b: T): T {
  if (a.age > 0) return a;
  else return b;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值