Как проверить объект даты с помощью ввода-вывода (typescript)?

#javascript #typescript #validation #runtime #typing

#javascript #машинописный текст #валидация #время выполнения #ввод

Вопрос:

Я не смог найти документацию по этому вопросу, так что вот я StackOverflow.

У меня есть интерфейс, который я хочу преобразовать и использовать при проверке io-ts во время выполнения. Этот интерфейс включает в себя поле с типом Date на нем. Я просмотрел остальные команды t при импорте io-ts as t и не могу найти способ проверить, что это дата

Пример:

 export interface Transaction {
  transactionDate: Date,
  phrase: string
}
 

Как мне преобразовать это в тип с помощью ввода-вывода? В идеале это было бы что-то вроде этого

 export const Transaction = t.type({
  transactionDate: t.date,
  phrase: t.string
})
 

Единственное, что, как я обнаружил, работает, — это установка даты в качестве типа t.string , но это пропустило бы любую строку.

Ответ №1:

Я нашел пакет npm с именем io-ts-types . Я просматривал документацию, думая, что она io-ts уже была частью.

https://github.com/gcanti/io-ts-types

В dates встроен модуль io-ts-types , посвященный датам

https://gcanti.github.io/io-ts-types/modules/date.ts.html

Пример использования

 import * as td from 'io-ts-types'

const dateObj = t.type({
  date: td.date
})

const test = {
  date: new Date()
}
 

Вы можете использовать декодер для проверки того, что это работает следующим образом isLeft(dateObj.decode(test))