Ts支持哪些类型和类型运算(上)

目录

1、元组 

2、接口(interface)

3、枚举(Enum)

4、字面量类型

5、类型的装饰


静态类型系统 就是把 类型检查从运行时提前到了编译时,所以ts类型系统中的许多类型与js并无区别

例如:

基本类型: number、boolean、string、object、bigint、symbol、undefined、null

复合类型方面,JS 有 class、Array,这些 TypeScript 类型系统也都支持,但是又多加了三种类型:元组(Tuple)、接口(Interface)、枚举(Enum)。

1、元组 

说明:元素个数和类型固定的数组类型

type Tuple = [string,number]

2、接口(interface)

说明:用来描述对象、函数、构造器结构

//函数
interface MyPerson {
  name: string;
  age: number;
}

const obj: MyPerson = {
  name: "张三",
  age: 18,
};

class Person implements MyPerson {
  name: "小乔";
  age: 18;
}

这里我们声明了 一个 名为 MyPerson 的接口 其中有两个属性 1-name 2-age 他们对应的类型为stringnumber

obj对象应用了这个接口,所以obj中必须要有name、age这两个字段且类型必须与MyPerson相互对应

implements译为实现 代码中 Person类实现了MyPerson接口,具体表达的意思与obj相同

// 函数类型
interface SayGood {
    (name: string): string;
}

const sayGood: SayGood = (name: string) => {
    return   name + 'is good'
}

这里我们声明了 一个 名为 SayGood 的接口描述了一个函数,接受一个name为参数类型是 string 函数的返回值为string

// 构造函数
interface MyPerson {
    name: string;
    age: number;
}

/**
 * 该接口描述了一个构造函数
 * 该构造函数接受两个参数(name 和 age),并返回一个 MyPerson 类型的实例。
 */
interface PersonConstructor {
    new (name: string, age: number): MyPerson;
}

/**
 * @description: 接受一个 PersonConstructor 类型的参数,返回一个 MyPerson 类型
 * @param {PersonConstructor} ctor
 * @return {MyPerson}
 */
function createPerson(ctor: PersonConstructor):MyPerson {
    return new ctor('shmily', 18);
}

对象类型、class在ts中也叫索引类型,对象可以动态添加属性,如果不知道会有什么属性,可以使用索引签名

interface MyPerson {
    [prop: string]: string | number;
}
const obj:MyPerson = {};
obj.name = 'shmily';
obj.age = 18;

3、枚举(Enum)

说明:一系列值的集合

enum API {
  a = "/api/a",
  b = "/api/b",
  c = "/api/c",
  d = "/api/d",
}

const res = API.a; ///  /api/a

4、字面量类型

字面类型有两种,第一次为普通的字符串字面量例如'aaa',另一种为模板字面量比如 `#${string}`

他的意思是以#开头后面为任意的string类型

还有四种特殊的类型:void、never、any、unknown:

  • never 为不可达,比如函数抛异常的时候,返回值就是 never。
  • void 为空,可以是 undefined 或 never。
  • any 为任意类型,任何类型都可以赋值给它,它也可以赋值给任何类型(除了 never)。
  • unknown 为未知类型,任何类型都可以赋值给它,但是它不可以赋值给别的类型。

5、类型的装饰

ts类型系统还支持 添加 类型的属性   比如 可选、只读

interface MyPerson {
    readonly name: string; //只读
    age?: number;  //可选
}

type tuple = [string, number?];

相关推荐

  1. C语言运算类型哪些

    2024-04-21 11:20:06       6 阅读
  2. OpenCV支持哪些类型的文件格式读写?

    2024-04-21 11:20:06       18 阅读
  3. ts字面量类型

    2024-04-21 11:20:06       39 阅读
  4. TS的高级类型

    2024-04-21 11:20:06       34 阅读
  5. TS:子类型关系

    2024-04-21 11:20:06       32 阅读
  6. TS泛型类型

    2024-04-21 11:20:06       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 11:20:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 11:20:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 11:20:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 11:20:06       20 阅读

热门阅读

  1. jvm概述

    jvm概述

    2024-04-21 11:20:06      12 阅读
  2. 【再探】设计模式-设计原则

    2024-04-21 11:20:06       15 阅读
  3. grep常规用法整理【ing】

    2024-04-21 11:20:06       16 阅读
  4. 【计算机网络】面经

    2024-04-21 11:20:06       12 阅读
  5. 如何使用Python进行Web开发,如Flask或Django?

    2024-04-21 11:20:06       15 阅读
  6. 华为海思数字芯片设计笔试第八套

    2024-04-21 11:20:06       15 阅读
  7. LlamaIndex 组件 - Prompts

    2024-04-21 11:20:06       19 阅读
  8. 汽车牌照-C++

    2024-04-21 11:20:06       11 阅读