1

我在我的应用程序中使用@types/fabric包。我想使用结构类型中的预定义接口(如ICircleOptions..etc IRectOptions.)。

如何将这些接口与io-ts库一起使用以进行运行时类型检查。

我已经定义了这样的类型:

const Response = t.type({
  id: t.number,
  type: t.string,
  objects: t.array(t.union([ICircleOptions, IRectOptions]))
})

我想使用结构预定义接口来定义我的对象数组的类型。

我已经浏览了https://github.com/gcanti/io-ts/issues/209 并且io-ts的作者在那里共享了示例,但不适用于我的情况。

请告诉我,这可能吗?谢谢。

4

1 回答 1

0

您必须为fabric提供的类型定义编解码器。例如:

import * as t from "io-ts/Codec";
import { ICircleOptions } from "fabric/fabric-impl";
import { Either } from 'fp-ts/Either'

export const codecICircleOptions= t.type({ // or export const ICircleOptions if you like
  radius: t.number,
  startAngle: t.number,
  endAngle: t.number
});

export const example: Either<unknown, ICircleOptions> = codecICircleOptions.decode({})

// ....

const Response = t.type({
  id: t.number,
  type: t.string,
  objects: t.array(t.union([codecICircleOptions, codecIRectOptions]))
})
于 2021-02-04T14:55:02.590 回答