interface
接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法
简单来讲,一个接口所描述的是一个对象相关的属性和方法,但并不提供具体创建此对象实例的方法
重名会重合到一起
如果两个interface名称相同,会把两个合到一起
重复定义同一个需要类型相同
不能多或者减少属性
设置任意key
当定义接口返回数据时,我们不确定接口会返回多少,知道所需要的固定属性,其余属性可以设置为[propName: string]
需要注意的是,一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集
可选
interface Modal {
name: string
age: number
b?:number
}
let modal: Modal = {
name: '123',
age: 12,
}
只读
常用于id和函数,不想被修改
继承
相当于再次合并两个接口
函数定义
相当于定义了一个参数为name
,返回值为数字数组类型的函数
interface Fn {
(name: string): number[]
}
let fn1:Fn = (name:string)=>{
return [1,2,3]
}
数组类型
采用普通方式定义和泛型方式定义基本数组类型
定义对象数组
interface X {
name:string,
age?:number
}
let arr:X[]=[{name:'123'}]
定义多维数组
let arr: number[][] = [[1], [2]]
let arr1: Array<Array<number>> = [[1], [2]]
元组定义数组
let arr2:[number,string] = [1,'2']
定义arguments类数组
function Arr(...args:any): void {
console.log(arguments)
//错误的arguments 是类数组不能这样定义
let arr:number[] = arguments
}
Arr(111, 222, 333)
function Arr(...args:any): void {
console.log(arguments)
//ts内置对象IArguments 定义
let arr:IArguments = arguments
}
Arr(111, 222, 333)
//其中 IArguments 是 TypeScript 中定义好了的类型,它实际上就是:
interface IArguments {
[index: number]: any;
length: number;
callee: Function;
}