interface
重名會重合到一起
如果兩個interface名稱相同,會把兩個合到一起
重復定義同一個需要類型相同
不能多或者減少屬性
設置任意key
當定義接口返回數據時,我們不確定接口會返回多少,知道所需要的固定屬性,其余屬性可以設置為[propName: string]
需要注意的是,一旦定義了任意屬性,那么確定屬性和可選屬性的類型都必須是它的類型的子集
可選
interface Modal {name: stringage: numberb?: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;
}