object:
- object 类型表示非原始对象,也就是除了 number, string, boolean, symbol, null 或 undefined 之外的任何类型。object 类型是所有对象类型的父类型,也就是说,任何对象类型都可以赋值给 object 类型,但是 object 类型只能赋值给自己和 any 类型,object 类型可以用来表示不确定的输入参数或返回值 。
class Test {private create(o: object | null): void {}private main(): void {this.create({ prop: 0 }); // OKthis.create(Person); // OKthis.create(null); // OKthis.create(42); // Errorthis.create("string"); // Errorthis.create(false); // Errorthis.create(undefined); // Error}public test(): object {let obj: Person = { age: 1, name: 'ss' };return obj;}
}
class Person {public name: string;public age: number;
}
Object:
-
Object 类型是一个内置的接口,它描述了所有对象都具有的一些属性和方法,例如 valueOf, toString, hasOwnProperty 等。Object 类型可以接受任何类型的赋值,但是只能赋值给 Object 或 any 类型。Object 类型不太安全,因为它允许原始类型也可以赋值给它,而原始类型并不是真正的对象。Object 类型不建议使用。
**接口:**接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。
// Object接口定义
interface Person { name: string; age: number;
}let tom1: Person = {name: 'Tom',age: 25
}; // successlet tom2: Person = {name: 11,age: 25
}; // Error
{}:
- {} 类型是一个空对象类型,它表示没有任何属性的对象。{} 类型和 Object 类型类似,也可以接受任何类型的赋值,除了 null 和 undefined 之外。{} 类型也不太安全,因为它不能保证对象的结构和内容。