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

TypeScript:为包含createdAt字段的参数添加类型定义

解决方案:为byMostRecent函数添加类型标注(不使用any)

你可以通过定义一个接口或类型别名来明确约束数组元素必须包含createdAt字段,完全不需要依赖any类型。这里有几种实用的实现方式:

方式1:使用接口定义约束

// 定义接口,要求元素必须拥有可被Date解析的createdAt属性
interface HasCreatedAt {
  createdAt: Date | string | number;
}

export function byMostRecent(arr: HasCreatedAt[]) {
  return [...arr].sort((a, b) => {
    return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
  });
}

方式2:使用类型别名定义约束

如果你更喜欢类型别名而非接口,写法几乎一致:

type HasCreatedAt = {
  createdAt: Date | string | number;
};

export function byMostRecent(arr: HasCreatedAt[]) {
  return [...arr].sort((a, b) => {
    return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
  });
}

额外优化:根据实际场景收窄类型

如果你的业务中createdAt的类型是固定的(比如只会是ISO日期字符串),可以把类型约束得更严格,避免不必要的类型范围:

interface HasCreatedAt {
  createdAt: string; // 仅允许ISO格式的日期字符串
}

这样做的好处是,TypeScript会在编译阶段就帮你检查传入的数组是否符合要求——如果有元素缺失createdAt或者类型不匹配,编辑器会直接报错,提前规避运行时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:52:59