Typescript学习——接口

接口:interface

TypeScript 的核心原则之一就是对‘值’ 所具有的结构进行类型检查,而接口的作用就是为这些类型命名或为你的第三方代码定义契约。相当于定义了值的类型。

用法

const foo = (params: {name: string})=>{
	rerurn parasms
}

foo函数使用时,必须传入一个包含参数为name且类型为string,否则类型检查器会报错。

用interface来描述

interface TestParam {
	name: string
}

const foo = (params: TestParam)=>{
	rerurn parasms
}

这种写法,作用和上面相同,但是更加优雅,如果你的类型中包含很多,都写在参数后面的话,代码会很混乱。下面介绍一下interface的一些用法。

可选属性

interface TestParams {
  name: string,
  value?: number | null // 属性可选
}

const foo = (params: TestParam)=>{
	rerurn parasms
}
 

这里定义的value就是可选属性,在调用foo时,检查传入的参数时不会检查是否包含value值。

只读属性

它规定属性只有在对象创建时赋值,通过 readonly 来指定,定义为只读属性以后只可以访问不可以修改。

interface TestParams {
  readonly name: string, // 只读属性
  value?: number | null,
  ary: ReadonlyArray<number>  // 只读数组
}

const a: ITestParams = {name: 'a', value: 30, ary: [2, 3, 4]};

a.value = 40; 
a.name = 'b'; // 报错 readonly
const b = a.ary[0];
a.ary[1] = 45; // 报错 ReadonlyArray

针对接口除已定义属性外的额外属性的检查

如果我们不需要强制定义某个数据的类型,可以将它定义为any。

interface TestParams {
  name: string,
  value?: any
}

const foo = (params: TestParam)=>{
	rerurn parasms
}

定义函数类型的接口

interface TestFunction {
  (name: 'string', value: any): string // (形参格式): 返回值格式
}

const test: TestFunction = function(name, value) { 
  return name.toUpperCase();
}


定义类的接口

interface Person{
  say: {
    (name: string, age: number): boolean
  },
  name: string,
  age: number
}

class Man implements Person { 
  name: string;
  age: number;
  say(name, age) {
    return false;
  }
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
}

和Java中类十分相似。

接口间的继承

interface Props {
  name: string
}

interface Props2 extends Props {
  age: number
}

const a: Props2 = {name: 'xxx', age: 89};

一个接口也可以继承多个接口。

interface Props1 {
  name: string
}


interface Props2 {
  age: number
}

interface Props3 extends Props1, Props2 { // 多继承
  color: string
}


const a: Props3 = {name: 'xxx', age: 89, color: 'red'};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值