typescript的对象类型介绍(附实例)

69 阅读2分钟

在这篇博文中,我们将通过实例来学习typescript的对象类型。

在typescript中,创建对象有三种变化:

1.对象
2. 对象
3.{}

Typescript对象类型

Typescript引入了一种新的数据类型,叫做对象类型。这种对象代表的类型不是原始类型,如字符串、数字、空、布尔、空和定义。

引入其他对象类型的原因如下

下面的Javascript对象类有一些以对象为参数的方法。在Typescript中,这些方法有非原始类型的表示,因此引入了对象类型。

Object.getOwnPropertyDescriptor
Object.create
Object.observe

将原始值传递给上述方法会在运行时抛出。由于对象类型断言的检查,Typescript给出了编译错误。

对象声明

const obj: object = {};  

对象类

这是一个对象类,是所有javascript API类的核心超类,包含toString和toLocalString方法。

空对象 -

这是一个自定义对象,它有一个没有变量和方法的空对象。空对象和Object指向相同的类型。

let myobject = {};  
myobject.key = 'test';  

在空对象中,没有相关的键,它给出了编译错误--属性键不存在于type{}上。也可以使用预定义的属性来创建对象 这里创建的Emp对象有两个字符串和数字类型的属性name和id Typescript把这个对象当作{name:string,id:number} 当你分配任何不同类型的值时,会产生编译错误。

例子

var Emp = {  
  name: 'Tom',  
  id: 1  
};  
  
Emp = {  
  name: 'Kiran',  
  salary: 2000  
};  

在下面的例子中,创建了对象,现在用不同的值改变了对象,并且修改了对象的结构,这给出了编译错误,因为新的对象不能分配给现有的对象
对象可以在很多方面使用,比如下面的事情

  • 对象包含的功能包括属性
  • 可以使用对象字面意义来创建
  • 可以将一个对象传递给一个函数
  • 也可以使用鸭子类型的手段进行对象验证,如果两个对象包含1.相同的类型2.相同的属性

如何检查两个对象的类型是否相等?

Typescript Reflection API提供了一个构造函数来检查对象的类型,并返回ClassName 下面是一个检查相同类型对象的例子。

class Parent {}  
class Child extends Parent {}  
var parent = new Parent();  
var child = new Child();  
var parent1: Parent;  
parent1 = new Child();  
console.log(parent.constructor == Parent); // returns true   
console.log(child.constructor == Child); // returns true  
console.log(parent1.constructor == Child); // returns true  
console.log(parent1.constructor == Parent); // returns false