TS 基础知识(二)

2021-11-04  本文已影响0人  _1633_

文档地址

高级类型

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

 索引类型和字符串索引签名
上一篇 下一篇

猜你喜欢

热点阅读