美文网首页
TS 基础知识(二)

TS 基础知识(二)

作者: _1633_ | 来源:发表于2021-11-04 21:37 被阅读0次

    文档地址

    高级类型

        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] 为索引签名的类型:

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

    相关文章

      网友评论

          本文标题:TS 基础知识(二)

          本文链接:https://www.haomeiwen.com/subject/avufzltx.html