2-11 Interface接口

定义参数类型的方法有两种:typeinterface

两种方法有什么区别?
interface: 只能代表一个对象。interface Teacher{}
type:代表一个类型。type Teacher : array

规范:如果能用interface表述一个类型,就用interface,实在不行再用类型type

interface各个类型使用方法

interface Teacher{
 name:string //字符串
 age:number //数字
 hobby: Array<number> //全部为数子的数组
 sayHello(): string // 函数,返回string  
 [propName]:any // 除了定义外的参数可任意添加参数
 a?: string  // 可有可无 
 readonly b:string  // 只可以读,不可以改
}

使用过程中可能会产生的问题

字面量形式传递参数,在没有定义age参数的情况下报错

image.png

变量的形式传递,在没有定义age参数的情况下不会报错

image.png

产生这个现象的原因是:当以字面量形式传递时typescript会对参数进行强校验
变量传递参数时,不会特别严格。

interface可以定义一个函数方法

say():string  // 返回一个string 类型的方法

应用了接口implements,则必须写入接口规定的所有参数

interface Teacher {
  name: string
}
class User implements Teacher {
  // name:'mtg'
}

报错


image.png

继承接口extends

image.png

报错,这是继承后父类和子类的参数均包含在内


image.png

interface可以定义方法

interface SayHi{
   (Word:string):string 
}

使用

interface SayHi {
  (word: string): any
}
const say: SayHi = (word) => {
  console.log(word)
}
say('你好')

编译结果是什么样的呢

   tsc demo.TS

编译后interface 都会被提出掉,只是为了编译是有提示

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Go语言中的interface没有强制要求实现方法,但是interface是go中非常强大的工具之一。任一类型都可...
    EriolSoong阅读 5,952评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,905评论 18 399
  • 接口(interface)是一种抽象的类型,是对其他类型行为的概括和抽象。从语法角度来看,接口是一组方法签名定义的...
    JunChow520阅读 2,990评论 0 1
  • 能力模式 选择题 【初级】下面属于关键字的是()A. funcB. defC. structD. class 参考...
    灵魂深灵阅读 10,652评论 2 5
  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 8,806评论 1 24