TypeScript——Object、object、{}的区别

159 阅读1分钟

Object

Object类型是所有Object类的实例的类型,它包括所有JavaScript内置的对象类型,我们常说的万物皆对象说的就是Object. (相当于包含了所有的类型)

使用如下:

const obj: object = {} // 对象
const arr: object = [1, 2, 3] // 数组
const fn: object = function () { // 函数
    console.log(obj);
}
const tuple: object = ['count', 10] // 元组
const map: object = new Map() // 键值对集合
const set: object = new Set() // 无序集合

上述代码写法虽然不会报错,但无法使用其特有属性或函数

eg:执行fn(),会提示无法执行;使用map.set会找不到该函数

解决方法: 使用具体的数据类型替换Object,如下:

const obj: Object = {}
const arr: number[] = [1, 2]
const fn: Function = function () {
    console.log(obj);
}
const tuple: [string, number] = ['count', 1]
const map: Map<number, string> = new Map()
const set: Set<string> = new Set()
obj.valueOf()
arr.push(4)
fn()
tuple.push(1)
map.set(0, "0")
set.add('hello')

object

object是TypeScript中的类型(在JS中不存在),它是非基本数据类型的统称,包括普通对象、数组、函数等, 常用于泛型约束.

使用如下:

let obj:object = {} // 正确
let obj1:object = [] // 正确
let obj2:object = ()=>111 // 正确
let obj3:object = 'qwe' // 错误
let obj4:object = 666 // 错误

{}

相当于new Object, 除了不能修改值,其他同上述说到的Object。(建议尽量不用)

let obj: {} = {name:1}  // 正确
let obj1: {} =  () => 123 // 正确
let obj2: {} = 123 // 正确

obj.age=11 // 错误

参考文档

blog.csdn.net/qq119556631…

blog.csdn.net/time_____/a…