资讯专栏INFORMATION COLUMN

TypeScript 初识 - 高级类型

CatalpaFlat / 1634人阅读

摘要:联合类型联合类型表示一个值可以时集中类型之一,使用进行分隔每种类行。联合类型的变量在被赋值的时候,根据类型推论的规则,推断出一个类型。

联合类型

联合类型表示一个值可以时集中类型之一,使用 | 进行分隔每种类行。

联合类型的变量在被赋值的时候,根据类型推论的规则,推断出一个类型。

联合类型的变量当被推断出类型后,就变得和正常声明的变量一样:

let ffffd: string | number;
ffffd = "hello world";
// ffffd被推断成了 string,访问 length 属性不会报错
console.log(ffffd.length);
ffffd = 255;
// 报错 ffffd 被推断成了 number,访问 length 属性时就报错了
console.log(ffffd.length);

联合类型的变量没有被推断出类型时,这个变量只能访问联合类型中所有类型共有的属性:

function func(name: string, age: string | number) {
    // Error,Property "length" does not exist on type "string | number".Property "length" does not exist on type "number".
    console.log(age.length);
    // 编译通过
    console.log(age.toString());
}
交叉类型

交叉类型是将多个类型合并为一个类型,交叉类型的变量拥有所有类型的所有属性、方法,使用 & 进行合并类型:

function extend(first: T, second: U): T & U {
    const result = {};
    for (let id in first) {
        (result)[id] = first[id];
    }
    for (let id in second) {
        if (!result.hasOwnProperty(id)) {
            (result)[id] = second[id];
        }
    }

    return result;
}

const x = extend({ a: "hello" }, { b: 42 });

// 现在 x 拥有了 a 属性与 b 属性
const a = x.a;
const b = x.b;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106783.html

相关文章

  • TypeScript 初识 - 函数

    摘要:函数类型函数返回值类型我们可以给每个参数添加类型之后再为函数本身添加返回值类型。能够根据返回语句自动推断出返回值类型,所以通常可以省略它匿名函数完整函数类型完整的函数类型包含两部分参数类型和返回值类型。 函数是 JavaScript 的第一等公民,函数在 JavaScript 中可以实现抽象层、模拟类、信息隐藏和模块等等。TypeScript 在一定基础上扩展了函数的功能。 函数类型 ...

    ARGUS 评论0 收藏0
  • TypeScript 初识 - 变量

    摘要:通常会定义为函数的返回值一个类型的变量是没有生命用处的,因为类型的变量只能赋值为。和有一些区别的,函数没有返回值时返回类型为的方法,即使没有写明语句,也会在函数执行完的时候,隐式地返回一个类型。中新增加的变量声明方式。 类型注解 类型注解使用 :TypeAnnotation 语法。类型声明空间中可用的任何内容都可以用作类型注解。 const num: number = 123; fun...

    dinfer 评论0 收藏0
  • TypeScript 初识 - 内置对象

    摘要:自带的内置对象都可以直接在中当作定义好的类型。的内置对象标准提供了常用的内置对象等。在不需要额外引入就可以直接使用这些内置对象用写不是内置对象的一部分,想要写时提示,需要引入第三方声明文件 JavaScript 自带的内置对象都可以直接在 TypeScript 中当作定义好的类型。 TypeScript 核心库的定义文件 TypeScript 核心库的定义文件定义了所有浏览器环境需要用...

    lordharrd 评论0 收藏0
  • TypeScript 初识 - 接口

    摘要:接口的作用是声明变量的结构和方法,但不做具体的实现。这两个使用场景不同。额外的属性检查从字面上的意思看,其实就是对接口未定义的属性进行检查。上面的例子,定义了接口,它具有索引签名。它不会帮你检查类是否具有某些私有成员。 接口的作用是声明变量的结构和方法,但不做具体的实现。通常,接口会强制对所有成员进行类型检查,包括数量和类型: interface Name { first: s...

    gnehc 评论0 收藏0
  • TypeScript 初识 - 枚举

    摘要:当满足以下条件时,枚举成员被当作是常数不具有初始化函数并且之前的枚举成员是常数。在这种情况下,当前枚举成员的值为上一个枚举成员的值加。但第一个枚举元素是个例外。枚举成员使用常数枚举表达式初始化。 数字类型枚举 常规枚举的值都是数字类型,因此被称为数字类型枚举: enum Color { Red, Blue, Green } console.log(Color.R...

    molyzzx 评论0 收藏0

发表评论

0条评论

CatalpaFlat

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<