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

.d.ts声明文件能否为导出内容添加as const断言?

完全可以在 .d.ts 声明文件中实现和 as const 完全等价的效果,常用的实现方案有两种:

方案1:手动声明等价的只读字面量类型

as const 本质上做了两件事:将对象所有层级的属性标记为只读、把所有属性值的类型收窄到对应的字面量类型。你可以直接在声明文件中手动标注符合这个规则的类型即可。
假设你的JS文件名为stuff.js,对应的stuff.d.ts写法如下:

export declare const stuff: {
  readonly a: {
    readonly b: "xyz";
  };
};

方案2:借助临时变量直接使用as const断言

如果对象结构复杂,手动编写全量属性的只读和字面量类型效率太低,你可以在声明文件内部先定义一个临时常量,直接加as const断言后再导出对应类型即可,最终效果和TS文件中直接写as const完全一致:

declare const _temp_stuff: {
  a: {
    b: "xyz"
  }
} as const;

export declare const stuff: typeof _temp_stuff;

两种方案处理后,TS都可以正确识别stuff.a.b的类型为固定字面量"xyz",支持条件类型、类型查找等所有as const的适用场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:54:05