概论
在 TypeScript 中,object 类型是一个非原始类型的标志,表示任何不是 number、string、boolean、symbol、null 或 undefined 的值。因此,object 类型本身不允许 null 或 undefined 的赋值。
Object 和 {} 类型等同,object 是 TypeScript 限定数组或者对象或者函数的类型。
Object既可以是值也可以是类型,{}是值。
object是类型,不能是值。
代码测试
let ffa: Object;
let ffa2: object;
let ffa3: {};
/**
* 说明 {} 等同 Object,几乎所有值类型都可以分配
*
* object 严格模式限定只能分配对象或者数组
*/
ffa3 = 2342342 // 合法
ffa3 = "sldfjsldfjlsf" // 合法
ffa3 = [] // 合法
// ffa = undefined; // 非法,严格模式
// ffa = null; // 非法,严格模式
ffa = [] // 合法
ffa = {} // 合法
ffa = 424234; // 合法
ffa = "slkjsdjdlf"; // 合法
console.log(ffa, "ffa")
// ffa2 = 234234; // 报错
// ffa2 = "sdlfkjsdfs" // 非法
// ffa2 = undefined; // 非法,严格模式
// ffa2 = null; // 非法,严格模式
ffa2 = [] // 合法
ffa2 = {} // 合法
console.log(ffa2, "ffa2")
解释
-
ffa3被声明为{}类型,等同于Object,因此几乎所有类型的值都可以赋给ffa3,包括number、string和数组。 -
ffa被声明为Object类型,与{}等同,允许分配几乎所有类型的值,但不允许分配null或undefined。 -
ffa2被声明为object类型,严格限制只能分配对象或数组,不能分配原始类型(如number、string)、null或undefined。
通过这些测试代码,我们可以看出 Object 和 {} 的宽松性以及 object 类型的严格性。
前端工程师、程序员

浙公网安备 33010602011771号