TS学习笔记3-interface

95 阅读1分钟

interface

interface是用来定义对象和函数的,起名时首字母大写

1、定义对象

interface User {
  name: string
  age: number
}
const user: User = { name: '张三', age: 17 }

当你对对象定义了类型后,少写属性和多写属性都会报错。

你在使用这个对象时会有属性提示。

你可以定义可选属性只读属性,可选属性你可以选择传或者不传,只读属性在修改时会报错。

interface User {
  name: string
  age: number
  readonly id: number
  childName?: string
}
const user: User = { name: '张三', age: 17, id: 1 }
user.age = 18
user.id = 2

user没有childName属性但是没有报错。

修改user的id属性会报错。

image.png

如果一个对象有多个不确定的属性,可以用自定义属性

interface User {
  name: string,
  age: number
  [propName: string]: any
}
const user: User = {
  name: '张三',
  age: 11,
  id: 1,
  children: []
}

2、定义函数

interface GetId {
  (id: number): number
}
const getId: GetId = (id: number) => id