TS 基础知识(三)

接口 Interface

    在 JavaScript 中并没有接口这个概念;

    TypeScript 的 核心原则之一是 对值所具有的结构进行类型检查;因此在TypeScript 就出现了接口, 接口就是  为这些 类型命名 和为你的代码或第三方代码 定义 检查的标注和规则

接口 

    可选属性  和 只读属性

    额外的属性

索引签名基础知识(二)讲到

    继承接口

            和类一样,接口也可以相互继承

    继承接口
多继承

    混合类型

            一个对象可以同时做为 函数 和 对象 使用,并带有额外的属性,比如 Counter 这个 接口 规定了 可以作为 函数,并且这个函数还有额外的属性;

   混合类型

    接口继承类

            当接口继承了一个类类型时,它会继承类的成员但不包括其实现;

            接口同样会继承到类的 private 和 protected 成员;

            这意味着当你创建了一个接口继承了一个拥有 私有 或 受保护的成员 的类时,这个接口类型只能被这个类或其子类所实现(implement)。

 接口继承类

函数

基本示例

    类型推断

        在赋值语句的一边指定了类型但是另一边没有类型的话,TypeScript编译器会自动识别出类型:

  类型推断

    可选参数 、默认参数 和  剩余参数

可选参数 、默认参数 和  剩余参数

    注意:

        JavaScript 里,每个参数都是可选的,可传可不传。 没传参的时候,它的值就是 undefined

        可选参数必须跟在必须参数后面

        在 TypeScript 里,我们也可以为参数提供一个默认值当用户没有传递这个参数传递的值是 undefined 时。 它们叫做有默认初始化值的参数。

   函数的重载

        JavaScript 本身是个动态语言。 JavaScript 里函数根据传入不同的参数而返回不同类型的数据是很常见的。

        在 Typescript 中 为 同一个函数提供多个 函数类型定义 来进行函数重载。 编译器会根据这个列表去处理函数的调用;

        重载的 pickCard 函数在调用的时候会进行正确的类型检查;

函数的重载

        为了让编译器能够 选择正确的检查类型,它与 JavaScript 里的处理流程相似。 它查找重载列表,尝试使用第一个重载定义。 如果匹配的话就使用这个。 因此,在定义重载的时候,一定要把最精确的定义放在最前面

        注意,function pickCard(x): any 并不是重载列表的一部分,因此这里只有 两个重载一个是接收对象另一个接收数字 以其它参数调用 pickCard 会产生错误


基础

    类的继承

        同 JavaScript 一样,  使用 extends 关键字;

    公共,私有与受保护的修饰符

         public 允许在 类内外 使用(未标明修饰符的属性和方法 一般都是 public)

         private 允许在 类内 被使用 

         protected 允许在 类内 及 继承的子类 中使用

   readonly 修饰符

   参数属性

         参数属性可以方便地让我们在一个地方定义并初始化一个成员;但是在参数多的情况下 还是推荐第二种写法,更直观;

   参数属性

    存取器

            核心原理还是使用的 Object.defineProperty 方法的 get set(vue2 的 核心原理);

存取器

    类的静态属性

            创建类的 静态成员,这些属性存在于类本身上面不是类的实例上;

            静态方法包含 this 关键字,这个 this 指的是

            父类的静态方法,可以被子类继承

单例模式

    抽象类

        abstract 关键字

        抽象类做为其它派生类的基类使用。 它们 一般不会直接被实例化

        抽象类中的抽象方法 不包含具体实现 并且 必须在派生类中实现。 抽象方法的语法与接口方法相似。 两者都是定义方法签名但不包含方法体

        注意: 不能创建一个抽象类的实例

抽象类

   把类当接口使用

        一般还是 不推荐 使用

   把类当接口使用

泛型

      定义函、接口、类  先不指定类型 ,而是在使用的时候指定类型;    

      泛型接口

 泛型接口

       泛型类

    泛型类

        泛型约束

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

推荐阅读更多精彩内容

  • TypeScript是微软开发的,基于类的面向对象编程,其文件以 .ts 为后缀名; TypeScript是Jav...
    hellomyshadow阅读 4,490评论 0 0
  • 一入IT深似海啊,不是在学习就是在去学习的路上,学完这个还有下一个,总结:我变秃了,也变强了。 刚学习完TypeS...
    康康_4f20阅读 2,948评论 0 2
  • 1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造...
    行者_zm阅读 3,596评论 0 0
  • 在第一版的基础上进行了优化,新增一些面试题/知识点,对一些知识点进行更加深入的描述。 一、对于MVVM的理解? M...
    DreamofLimb阅读 5,186评论 0 0
  • 一、简介 它是 JavaScript 的一个超集 TypeScript 语言是完全支持 ES6 语法的 TypeS...
    小碗吃不了阅读 3,968评论 0 0