TypeScript的对象类型

什么是 object 类型?

TypeScript 的 object 类型代表所有非原始类型的值。原始类型包括numberstringbooleanbigintnullsymbolundefined。当声明一个变量为 object 类型时,只能为其赋值为对象:

// object 类型声明
let student: object;

// object 类型的定义
student = {
    id: 1,
    name: "Asan",
    age: 18,
    isStudent: true
};

// 报错,不能赋值为字符串,Type 'string' is not assignable to type 'object'.ts(2322)
student = 'Asan'

TypeScript 如何声明一个有特定属性的对象?

在 TypeScript 中,可以通过以下的语法,明确指定对象的属性及其类型:

// 对象字面量
let student: {
    id: number;
    name: string;
    age: number;
    isStudent: boolean;
};

然后,可以通过字面量为该对象的指定的属性赋值:

student = {
    id:1,
    name:"Asan",
    age: 18,
    isStudent: true
};

当然,也可以把上面的两部分语法结合起来,像这样:

let student: {
    id: number;
    name: string;
    age: number;
    isStudent: boolean;
} = {
    id: 1,
    name: "Asan",
    age: 18,
    isStudent: true
};

如果访问对象上不存在的属性会发生什么?

如果尝试访问一个对象上未声明的属性,TypeScript 会在编译时报错:

// Property 'firstName' does not exist on type 'object'.ts(2339)
console.log(student.firstName);

而在 JavaScript 中,这种操作会返回 undefined,不会报错,这也是 TypeScript “Type” 的原因。


object、Object 和 {} 有什么区别?

  • object:表示所有非原始类型的值,可以理解为是一组属性和对应的值的集合
  • Object:描述所有对象的功能,比如 toString()valueOf() 方法
  • {}(空类型):表示没有自有属性的对象,但可以访问通过原型链继承的属性和方法:
let student: {};
// 报错,'firstName' 不存在于类型 '{}' 上
student.firstName = 'Asan';

// 正常,'toString' 来自 Object 原型
console.log(student.toString());

  • 如果你觉得我的工作对你有帮助,可以通过分享这篇文字或者关注同名公众号来支持我,你的支持是我持续创作的最大动力:
    image

  • 转载以及引用请注明原文链接

  • 本博客所有文章除特别声明外,均采用CC 署名-非商业使用-相同方式共享 许可协议。

posted @ 2025-05-27 18:25  Asanwos  阅读(17)  评论(0)    收藏  举报