在typescript中,我们定义对象的方式要用关键字interface(接口)来定义一种约束,让数据的结构满足约束的格式。
interface Person {
a:string,
b:string
}
//p1这样会报错,因为实例p1对象里缺少了属性b,实例和接口里的数量必须保持一致
let p1:Person = {
a:"123"
}
//p2,也会报错,因为p2里的属性类型也必须保持一致
let p2:Person = {
a:123,
b:'456'
}
//若p1里不需要太多的属性,则可以在接口中使用可选属性的方法,所以可以把Person 改造一下,这样p1就不会报错。
interface Person {
a:string,
b?:string
}
继承属性
//继承
interface A{
name:string
}
interface B extends A{
age:number
}
let obj:B = {
name:"string"
age:34,
定义数组
//普通方式定义数组
let arr: number[] = [1, 2, 3]; //数字类型的数组
let arr2: string[] = ["1", "2"]; //字符串类型的数组
let arr3: boolean[] = [true,false]; //bool类型的数组
let arr4: any[] = ['1',2,true,[1,2,3],{name:'tc',age:33}] //任意类型数组
//泛型的方式定义
let arr5:Array<number> = [1,2,3,4]
let arr6:Array<string> = ['2','3','4']
//泛型多维数组
let arr7:Array<Array<Number>> = [[1,2,3],[4,5,6],[7,8,9]]
//若多维数组中有字符串,可选用联合类型
let arr8:Array<Array<Number| String>> = [[1,2,3],[4,5,6],[7,8,9],['123','456']]
//类数组
//ts内置对象IArguments 定义
function Arr(...args:any): void {
console.log(arguments)
let arr:IArguments = arguments
}
Arr(1, 2, 3)
//IArguments 是 TypeScript 内置的类型,其中包括的属性:
interface IArguments {
[index: number]: any;
length: number;
callee: Function;
记录一下。