如何在 TypeScript 中处理 ISO 日期字符串?

2024-03-23

我是打字稿的新手,所以我正在努力掌握它的窍门。

网络请求将返回一个 JSON 对象,其中包含 ISO 日期字符串格式的字段。

data : Data = {when: "2016-07-13T18:46:01.933Z"}

当我为此接口创建类型签名时,是否有任何方法可以指定这实际上是 ISO 时间戳,还是我只需使用字符串?

interface Data {
  when: string
}

我发现我可以使用类型别名,这在精神上有帮助,但并不能真正验证 ISO 字符串。

type iso = string
interface Data {
  when: iso
}

同样,我很好奇是否有办法从这些打字稿注释生成 js 验证,以便我可以验证端点收到的信息,否则我的打字应用程序的其余部分毫无价值。

如果这是可能的,那么如果可以将此 iso 字符串强制转换为实际的 Date 对象,那就太酷了。

正如我所说,我是打字稿的新手,所以我不确定这是否超出了打字稿应该做的范围。


您可以使用类型保护 https://www.typescriptlang.org/docs/handbook/advanced-types.html.

import moment from 'moment'

export const isISO = (input: any): input is tISO =>
  moment(input, moment.ISO_8601, true).isValid()

然后您可以使用您想要处理任何错误日期的任何自定义逻辑,例如:

const maybeISO = fetch('Maybe ISO')

if (isISO(maybeISO)) {
  // proceed
} else {
  // check other format?
  // log error?
}

Cheers.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 TypeScript 中处理 ISO 日期字符串? 的相关文章

随机推荐