在这篇博文中,我们将通过实例来学习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