微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TypeScript快速了解_接口_03

TypeScript

接口

1.接口初探
function pr(labelledobj: { lable: string }) {
	console.log(labelledobj.lable)
}
let myObj = { size: 10, lable: 'size 10 object' };
pr(myObj)

使用接口描述来重现上面代码,使必须包含lable属性且类型为string

interface lableledvalue {
	lable: string
}
function pr( labelledobj: lableledvalue  ) {
	console.log(labelledobj.lable)
}
let myObj = {size: 10, label: "Size 10 Object"};
pr(myObj);

lableledvalue接口就像一个名字, 它代表有一个lable属性string的对象,只要传入的对象满足上面lableledvalue提到的必要条件,那么就是可以被允许。

2.可选属性
interface SquareConfig {
  color?: string;
  width?: number;
}
function createSquare(config: SquareConfig): {color: string; area: number} {
  let newSquare = {color: "white", area: 100};
  if (config.color) {
    newSquare.color = config.color;
  }
  if (config.width) {
    newSquare.area = config.width * config.width;
  }
  return newSquare;
}
let mySquare = createSquare({color: "black"});

可选属性的接口就是在属性名定义的后面加一个?符号,表示不传也可以

3.只读属性
interface Point {
    readonly x: number;
    readonly y: number;
}

设置属性命前用readonly来指定只读属性

let p1: Point = { x: 10, y: 20 };
p1.x = 5; // error!

也可以通过赋值一个对象字面量来构造一个Point,赋值后xy再也不能被改变了

let a: number[] = [1, 2, 3, 4];
let ro: ReadonlyArray<number> = a;
ro[0] = 12; // error!
ro.push(5); // error!
ro.length = 100; // error!
a = ro; // error!

TypeScript具有ReadonlyArray<T>类型,它与Array<T>相似,只是把所有可变方法去掉了,因此可以确保数组创建后再也不能被修改

a = ro as number[];

上面代码最后一行使用ReadonlyArray赋值到一个普通数组不可以,但是可以使用类型断言重写 可以用来手动指定一个值的类型

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐