zoukankan      html  css  js  c++  java
  • TypeScript类型作为集合

    https://www.staging-typescript.org/docs/handbook/typescript-in-5-minutes-oop.html

    google translate

    类型作为集合

    在 C# 或 Java 中,考虑运行时类型与其编译时声明之间的一一对应关系是有意义的。

    在 TypeScript 中,最好将类型视为一组具有共同点的值因为类型只是集合,一个特定的值可以同时属于多个集合。

    一旦您开始将类型视为集合,某些操作就会变得非常自然。例如,在C#中,这是尴尬绕过一个值,或者一个stringint,因为没有一个单一的类型,表示这种价值。

    在 TypeScript 中,一旦您意识到每种类型都只是一个集合,这就变得很自然了。您如何描述属于string集合或number集合的值?它只是属于这些集合集:string | number

    TypeScript 提供了许多以集合论方式处理类型的机制,如果您将类型视为集合,您会发现它们更直观。

    擦除的结构类型

    在 TypeScript 中,对象不是单一的精确类型。例如,如果我们构造一个满足接口的对象,即使两者之间没有声明关系,我们也可以在需要该接口的地方使用该对象。

    interface Pointlike {
    x: number;
    y: number;
    }
    interface Named {
    name: string;
    }
     
    function logPoint(point: Pointlike) {
    console.log("x = " + point.x + ", y = " + point.y);
    }
     
    function logName(x: Named) {
    console.log("Hello, " + x.name);
    }
     
    const obj = {
    x: 0,
    y: 0,
    name: "Origin",
    };
     
    logPoint(obj);
    logName(obj);
    尝试

    TypeScript 的类型系统是结构性的,而不是名义上的:我们可以将其obj用作 a,Pointlike因为它的xy属性都是数字。类型之间的关系由它们包含的属性决定,而不是它们是否以某种特定关系声明

    TypeScript 的类型系统也没有具体化:在运行时没有任何东西可以告诉我们objPointlike事实上,该Pointlike类型在运行时以任何形式存在

    回到将类型作为集合的想法,我们可以将其obj视为PointlikeNamed集和值集的成员。

  • 相关阅读:
    ajax执行失败原因
    js中使用trim
    使用Nginx做WebSockets代理教程
    Nginx负载均衡服务器实现会话粘贴的几种方式
    如何利用Nginx的缓冲、缓存优化提升性能
    apache虚拟目录配置实例
    nginx提示地址或端口被占用解决
    安装成功的nginx如何添加未编译安装模块
    新增存储用Parted分区并建LVM卷
    服务器链接状态统计
  • 原文地址:https://www.cnblogs.com/imust2008/p/15432486.html
Copyright © 2011-2022 走看看