TS 基础知识(二)

文档地址

高级类型

    1 交叉类型

        交叉类型是将 多个类型合并为一个类型, 也就是 几种类型之和;

        它把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性

交叉类型

    2 联合类型

        联合类型表示一个值可以是 几种类型之一,用竖线( | )分隔每个类型;

联合类型
联合类型

        如果一个值是联合类型,我们 只能 访问此联合类型的所有类型里 共有的成员。

只能 访问 共有的成员

    3 类型保护

       类型保护就是一些表达式,它们会在运行时检查以确保在某个作用域里的类型。

        类型谓词

   类型谓词

         pet is Fish 就是类型谓词。 谓词为 parameterName is Type 这种形式, parameterName 必须是来自于当前函数签名里的一个参数名。

        typeof 类型保护

                这些* typeof 类型保护*只有两种形式能被识别: typeof v === "typename"和 typeof v !== "typename", "typename" 必须是 "number", "string", "boolean" 或 "symbol"。 但是TypeScript并不会阻止你与其它字符串比较,语言不会把那些表达式识别为类型保护。

        instanceof 类型保护

instanceof 类型保护

可以为null的类型

    类型检查器认为 null 与 undefined 可以赋值给任何类型;   

    null 和 undefined 是 所有类型的子类型。 就是说可以把 null 和 undefined 赋值给 任何类型的变量。

    由于可以为 null 的类型是通过联合类型实现,那么你需要使用类型保护来去除 null;

类型保护

    如果编译器不能够去除 null 或 undefined,可以使用类型断言手动去除。 语法是添加 !后缀: identifier! 从 identifier 的类型里去除了 null和 undefined, 可以手动保证它不是 null 或者  undefined。

类型断言

字符串字面量类型

        字符串字面量类型允许你指定字符串必须的 固定值。 在实际应用中,字符串字面量类型可以与联合类型,类型保护和 类型别名 很好的配合。 通过结合使用这些特性,你可以实现 类似枚举类型的字符串。

字符串字面量类型

索引类型

    索引类型查询操作符 keyof

索引类型查询操作符

     索引访问操作符

            getProperty 里的 o: T 和 name: K,意味着 o[name]: T[K]。 当你返回 T[K] 的结果,编译器会实例化键的真实类型,因此 getProperty 的返回值类型会随着你需要的属性改变;

              person['name']具有类型 Person['name'] — 例子里则为 string 类型

 索引访问操作符

    索引类型 和 字符串索引签名

        keyof 和 T[K] 与字符串索引签名进行交互。 如果你有一个带有字符串索引签名的类型,那么 keyof T会是 string。 并且 T[string] 为索引签名的类型:

 索引类型和字符串索引签名
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • #前端基础 # ## JavaScript基础 ## ###渲染机制与变量 ### script代码为什么放到bo...
    hmg阅读 383评论 1赞 1
  • js的命名规范 1、.JS中严格区分大小写 2、命名的时候可以使用$、_、数字、字母,但是数字不能作为名字的第一位...
    筱贰_梁阅读 387评论 0赞 1
  • 第四章 变量、作用域和内存问题 基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基...
    北风吹_yfy阅读 399评论 0赞 1
  • 注:本文所有知识点总结或摘抄自廖雪峰javascript教程,点击查看更详细的讲解。 1.javascript简介...
    hanyuntao阅读 600评论 0赞 13
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 9,382评论 0赞 4

友情链接更多精彩内容