You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用typeof操作符获取新创建对象的实际类型而非声明类型?

能否用TypeScript的typeof获取对象实际类型而非声明类型?

不能直接通过显式标注类型后的变量用typeof拿到实际字面量类型——因为你给变量option显式指定了Options类型,TypeScript会把该变量的类型固定为Options,此时typeof option返回的就是声明的Options,而非对象字面量的精确类型。

要获取对象的实际类型,有两种可行方案:

1. 移除显式类型标注,用satisfies约束类型(推荐)

如果需要确保对象符合Options的结构要求,但又想保留实际字面量的精确类型,可以用satisfies关键字替代显式类型标注:

type Options = {
    a?: boolean
    b?: boolean
    c?: boolean
}

// 用satisfies确保对象符合Options的约束,同时让TS自动推断精确类型
const option = {
    a: true,
    b: true
} satisfies Options;

// typeof返回实际类型:{ a: boolean; b: boolean }
type OptionExactType = typeof option;

2. 完全依赖TypeScript的自动类型推断

如果不需要提前约束对象类型,直接省略类型标注,TypeScript会自动推断出对象字面量的精确类型:

const option = {
    a: true,
    b: true
};

// typeof返回{ a: boolean; b: boolean }
type OptionExactType = typeof option;

注意:如果已经给变量显式指定了类型(比如const option: Options = {...}),TypeScript会忽略字面量的实际结构,将变量类型锁定为声明的Options,此时无法通过typeof获取实际字面量类型。

内容的提问来源于stack exchange,提问作者Fiisa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 23:03:28