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

如何在TypeScript中为数组添加自定义default字段并保留数组特性

解决方案

可以通过Object.assign将数组与包含default属性的对象合并,既保留数组的所有方法和原有类型,又能添加自定义属性,且类型推导完全正确。

基础实现(手动指定默认值)

const array = Object.assign(
  ["en-US", "en-GB", "en-AU"] as const,
  { default: "en-US" }
);

此时array的类型会被自动推断为:

readonly ["en-US", "en-GB", "en-AU"] & { readonly default: "en-US" }

你可以正常调用数组方法(比如array.find(item => item === "en-GB")),也能直接通过array.default访问默认值,类型提示完全准确。

自动关联数组第一个元素作为默认值

如果不想重复写默认值,可以先定义基础数组,再合并属性:

const baseArray = ["en-US", "en-GB", "en-AU"] as const;
const array = Object.assign(baseArray, { default: baseArray[0] });

这样array.default会自动关联数组的第一个元素,因为是const断言,数组内容不可变,类型也会同步保持准确。

原理说明

  • Object.assign会将第二个参数的属性挂载到第一个数组对象上,运行时完全保留数组的所有内置方法(find、map等)。
  • TypeScript会自动合并数组的readonly元组类型与自定义属性的类型,确保类型安全,不会丢失原有数组的类型信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:42:12