2018-12-13 Typescript Types VS Interface

typescript types 和 interface 用法相同点和不同点整理

Interface 和 Types 都可用来规范对象

interface User {
    name: string
    age: number
    setAge(age: number) : void
}
type User  = {
    name: string
    age: number
    setAge(age: number): void
}

type User = (age:number) => void 
let u: User = {
    name: 'jack',
    age: 30,
    setAge(c) {
        this.age = c
    }
}
  1. type 的特有用法
type Name = string // type 可设置原始类型

// 联合类型
type PointX = {
  x: number
}
type PointY = {
  y: number
}
type Point = PointX | PointY

// test
let p: Point = {
      x: 10,
      y: 2
} // ok

// 组合成tuple
type tuple = [number, string]
let t: tuple = [1, '1']
  1. interface 特有用法
// interface 自动merging
interface User { name: string }
interface User { age: number }

let u: User = {
    name: 'zz',
    age: 2
} // 参数必须都要有
  1. extends

Interface extends interface

interface PointX { x: number }
interface Point extends PointX { y: number }

let p: Point = {
    x: 1,
    y: 1
}

Type alias extends type alias

type PartialPointX = { x: number }
type Point = PartialPointX & { y: number }

let p: Point = {
    x: 1,
    y: 1
}

Interface extends type alias

type PartialPointX = { x: number }
interface Point extends PartialPointX { y: number }

let p: Point = {
    x: 1,
    y: 1
}

Type alias extends interface

interface PartialPointX { x: number }
type Point = PartialPointX & { y: number }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容