我是打字稿的新手,所以我正在努力掌握它的窍门。
网络请求将返回一个 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(使用前将#替换为@)