接口定义
interface Person {
name: string
age: number
}
function print(p: Person) {
console.log(p.name);
console.log(p.age);
}
let persion = {age:10, name:"小明"};
print(person)
类型检查器不会检查属性的顺序,只要相应的属性存在并且类型匹配即可。
可选属性
interface SquareConfig {
color?: string
width?: number
}
定义可选属性只需要在属性后面加个?
即可。
只读属性
一些对象属性只能在对象被创建的时候修改属性的值,可以用readonly
指定只读属性。
interface Point {
readonly x;
readonly y;
}
readonly
和const
的区别主要在于一个是针对变量一个是针对对象的属性。
属性检查
interface SquareConfig {
color?: string;
width?: number;
}
function createSquare(config: SquareConfig): { color: string; area: number } {
// ...
}
let mySquare = createSquare({ colour: "red", width: 100 });
如果一个对象字面量存在任何“目标类型”不包含的属性时,就会出现报错。有两种方式可以绕开报错。
类型断言
let mySquare = createSquare({colour: "red", width: 100} as SquareConfig);
索引签名
interface SquareConfig {
color?: string;
width?: number;
[propName: string]: any
}
表示对象可能带有任意数量的其他属性。
网友评论