zoukankan      html  css  js  c++  java
  • typescript 基础知识(二)

    一 TypeScript基本概念定义:TypeScript核心原则之一是对值所具有的结构进行类型检查。

    泛型:是指在函数,接口,类定义时不指名具体某种类型,在运行时指定特定类型的一种特性。
    enum枚举:表示一个命名元素的集合。
     

    二 元组与数组区别:

    在所有的数据类型里,Array是唯一的泛型类型,也是唯一有两种不同的写法:Array<T>T[]

    元组的长度是固定已知的。因此使用场景也非常明确,适合用在有固定的标准/参数/配置的地方,比如经纬度坐标、屏幕分辨率等。

    三 交叉类型与联合类型:ts联合类型与交叉类型
     
    1 交叉类型(并集,用&相连):当我们使用交叉类型读取属性,可以获取所有类型的任一属性名,赋值的时候需要满足所有类型的结构。注意:当我们交叉的类型中含有相同属性名但属性类型不一样的情况,该属性会成为never类型。 
    interface A {
      name: string
      age: number
    }
    
    interface B {
      name: number
      id: string
    }
    
    type Intersection = A & B;
    const c: Intersection = {} as any;
    c.age = 10; // 正确
    c.name = '1' // 不能将类型“"1"”分配给类型“never”

    2 联合类型(合集,用|相连):当我们使用联合类型读取属性的时候,只能获取其共同的属性名;

    interface A {
      name: string
      age: number
    }
    
    interface B {
      name: number
      id: string
    }
    
    type Union = A | B;
    const c: Union = {} as any;
    c.name // 正确
    c.age // 类型“Union”上不存在属性“age”

    3 类型保护:

    常用的类型保护有typeof类型保护,instanceof类型保护和自定义类型保护

    1 function BuildURL(param: string | number): any {
    2   if (typeof param === 'string') {
    3     return param.toUpperCase()
    4   }
    5 }

    由于使用了typeof类型保护,所以在if的分支里可以告诉编译器放心的调用string类型的方法,编译器也会给出自动提示

    四 类型别名Type: 类型别名会给一个类型起个新名字,多用于复合类型。

    type strType = string | number | boolean;
    let str2: strType = "10";
    str2 = 10;
    str2 = true;
    
    interface muchType1 {
      name: string
    }
    interface muchType2 {
      age: number
    }
    type muchType = muchType1 | muchType2
    let obj: muchType = { name: "张三" }
    let obj2: muchType = { age: 10 }
    let obj4: muchType = { name: "张三", age: 10 }

    五 interface(接口)与Type(类型别名)区别:https://juejin.cn/post/6844903749501059085#heading-11

    接口:是在我们的应用程序中充当契约的结构。它定义了要遵循的类的语法,这意味着实现接口的类必须实现它的所有成员。

    相同点:1都可以描述一个对象或者函数 2 都允许拓展(extends)

    区别: type可以而interface不可以:

    • type 可以声明基本类型别名,联合类型,元组等类型
    • type 语句中还可以使用 typeof 获取实例的 类型进行赋值
    interface 能够声明合并
     1 interface User {
     2  name: string
     3  age: number
     4 }
     5 
     6 interface User {
     7  sex: string
     8 }
     9 
    10 /*
    11 User 接口为 {
    12  name: string
    13  age: number
    14  sex: string 
    15 }
    16 */

    强大的类型别名操作API

    typeScript中interface与type对比面试题

    深入理解TypeScript 

  • 相关阅读:
    Linux如何对文件内容中的关键字进行查找
    Gitlab如何进行备份恢复与迁移?
    Centos7上传文件和下载文件命令
    Linux下如何查看系统启动时间和运行时间
    您应该知道的35个绝对重要的Linux命令
    rabbitMq可靠消息投递之交换机备份
    rabbitMq可靠性投递之配置(消息至交换机,至队列不通的回调)
    springcloud超时重试机制的先后顺序
    mysql 8.0 1405的坑
    linux安装mysql8.0
  • 原文地址:https://www.cnblogs.com/terrymin/p/14608350.html
Copyright © 2011-2022 走看看