类型别名 type 与 interface

2021-12-13  本文已影响0人  RickyWu585
interface discount {
  (price: number): number;
}
let cost: discount = function (price: number): number {
  return price * 0.8;
};
interface User {
  name: string
  age: number
}

interface User {
  sex: string
}

/*
User 接口为 {
  name: string
  age: number
  sex: string 
}
*/
  1. interface通过extends继承实现
// 接口扩展接口
interface PointX {
  x: number;
}

interface Point extends PointX {
  y: number;
}
  1. type通过&交叉类型实现
type PointX = {
  x: number
}

type Point = PointX & {
  y: number
}
type Person = {
  name: string
  age: number
}

const xiaoMing: Partial<Person> = {name: 'xiaoming'} 
//不报错,partial代表部分类型

const shenMiRen:Omit<Person,'name' | 'age'> = {}
// omit代表删除某个类型,这里的值不能出现 name 和 age 属性了

type NewPerson = Pick<Person, 'name'>
// Pick作用是挑选一个对象里的某些属性,变成一个新的类型

type PersonKeys = keyof Person
// 这里的类型(keyof返回的)是一个联合类型:'name' | 'string' 
type Age = Exclude<PersonKeys,'name'>
// 这里的类型只有一个age,Exclude与Omit不同,过滤的是联合类型里的类型
type Partial<T> = {
  [P in keyof T]?: T[P]
}
type Exclude<T,U> = T extends U ? never : T
type Omit<T,K extends keyof any> = Pick<T,Exclude<keyof T,K>>
上一篇 下一篇

猜你喜欢

热点阅读