TypeScript:Object类型

1,408 阅读2分钟

「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

前置知识

object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。

object类

当我们这样声明时是不会报错的

let foo: object = function () { }
let foo1: object = []
let foo2: object = { }

但是我们使用其声明一个原始值就会出现报错

let foo3: object = false // 报错

如何声明一个对象?

我们可以使用声明对象自变量的方法进行

let foo = {}

当然我们还可以增加一些限制

let foo: {name: string, age: number } = {name:'Tom', age: 11 }

当然还可以这样写

let foo: {name?: string, age: number } = {name:'Tom' }

如何规范的定义对象?

在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。(这个下次在讲 哈哈哈哈)

微信图片_20210924160139.gif

Array数组类型

我们可以这样声明

let list: number[] = [1, 2, 3];

当然也可以使用数组泛型的方式

let list: Array<number> = [1, 2, 3];

这两个方法都表示由此类型元素组成的一个数组

元组类型

元组类型是一个很特殊的类型,在我理解来就是一个明确元素类型和元素数量的数组

基础的模子

// 我们先定义一个
let x: [string, number];

正确例子

x = ['hello', 10]; // OK

错误例子

x = [10, 'hello']; // Error

x = ['hello', 10, 10]; // Error

枚举类型

enum类型是对JavaScript标准数据类型的一个补充。

JavaScript中我们很经常使用一个对象去模拟枚举类。

let Status = {
    dangurous: 0,
    safe: 1,
}

TypeScript中如何表现?

enum Color { 
    Red, 
    Green,
    Blue
} 
let c: Color = Color.Green;  // 1

在我们没有进行赋值的情况下,从0开始为元素编号,依次累加。利用此特性我们还可以进行如下的操作

enum Color { 
    Red = 2, 
    Green,
    Blue
} 
let c: Color = Color.Green;  // 3

当然如果我们进行这样操作的话就会出现报错了

enum Color { 
    Red = 'red', 
    Green, // Enum member must have initializer.
    Blue // Enum member must have initializer.
} 
let c: Color = Color.Green; 

这里主要是因为字符串不会自增长,所以我们需要进行单独赋值

小结

本章主要是和大家介绍了一下关于对象类型下面的一些值的操作,之后我们会给大家带来进行一些类、接口、函数的相关文章的