joken-前端工程师

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

概论

在 TypeScript 中,object 类型是一个非原始类型的标志,表示任何不是 numberstringbooleansymbolnullundefined 的值。因此,object 类型本身不允许 nullundefined 的赋值。

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")

解释

  1. ffa3 被声明为 {} 类型,等同于 Object,因此几乎所有类型的值都可以赋给 ffa3,包括 numberstring 和数组。

  2. ffa 被声明为 Object 类型,与 {} 等同,允许分配几乎所有类型的值,但不允许分配 nullundefined

  3. ffa2 被声明为 object 类型,严格限制只能分配对象或数组,不能分配原始类型(如 numberstring)、nullundefined

通过这些测试代码,我们可以看出 Object{} 的宽松性以及 object 类型的严格性。

posted on 2024-06-30 22:32  joken1310  阅读(71)  评论(0编辑  收藏  举报