#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))