FDC3 连接和FDC3 用于网络信件Schemas
此软件包既持有由它们生成的用于定义FDC3桌面代理Britching协议和允许FDC3用于Web浏览器的Web连接代理COmmunication协议(WCP)和桌面代理COmmunication协议(DACP)所使用的JSON消息格式的图案文件和TypeScript类型.
在此软件包中分发的Schema文件也部署在它们给出的地点的网上 $id 字段,可见FDC3文件的有关章节(桥梁, (中文(简体) ), Web 连接协议, (中文(简体) ), 桌面代理通信协议) (中文(简体) ).
TypeScript 类型由每个计划产生,可以作为一组从包中导入:
import { BrowserTypes, BridgingTypes } from '@finos/fdc3-schema';
或个人:
import {
GetUserChannelsRequest,
JoinUserChannelRequest,
LeaveCurrentChannelRequest
} from '@finos/fdc3-schema/dist/generated/api/BrowserTypes.js';
详情:
- https://github.com/finos/FDC3 请检查isbn=值 (帮助)
- FDC3 规格
- 主要FDC3单元:https://www.npmjs.com/package/@finos/fdc3
信件类型生成注释
此文件夹包含 Typescription 接口, 由上下文 JSONSchema 生成 BritchingTypes.ts ()https://json-schema.org/ (中文(简体) )通过快取类型的文件( )https://quicktype.io/ 互联网档案馆的存檔,存档日期2013-12-02) (中文(简体) ). 也可以用Quicktype支持的其他语言为我们生成源文件.
请注意,提供这些定义是为了帮助在TypeScript中工作的开发者为Web消息对象生成有效的接通或FDC3——但不应被认为是消息定义的"真理之源"(而不是看图和文档).
并非总能通过 TypeScript 完美地复制 JSONSchema 中定义的类型/界面. 因此,如果定义之间有任何分歧,JSON Schema应该被假定是正确的,而不是TypeScript. 例如,JSON Schema可以定义对象+附加属性类型的限制上的可选字段(通过 "additionalProperties": { "type": "string"})),将产生索引签名 [property: string]: string; 在生成的 TypeScript 中。 该签名与可选属性(包括字符串属性)不兼容,因为它们有类型 string | undefinedJSON Schema中可能会出现类似的问题,如果使用这个方案通过组分生成一个子类型: additionalProperties 并不知道子schema的定义。 两个问题都可以通过使用 unevaluatedProperties 在 schema 中,它将遵从 subschema 中可选属性的已声明类型,但目前也被 Quicktype 所忽略 - 导致一种将编译但不限制 schema 中定义的可选属性值的类型.
此外,Quicktype并不总是完全复制指定的多形态字段 oneOf 或者说 allOf 在 JSON Schema 中,因为它通常会将不同的对象合并成单一类型(其中不包含在某一组成方案中的字段成为可选),而不是创建一个联盟类型。 在这种情况下,生产的类型可以使用(具有所有必要字段),但可能允许建造缺失必要属性的无效实例,或者包括多种组合的特性,根据JSON Schema,这些特性是不可能/有效的.
因此,这里提供的类型可用于提供有效的消息对象并读取/写入他们的JSON编码,但可能无法检测或防止JSON Schema识别出有限的一组无效对象.
最后,Quicktype将生成代表schema子单元的类型或接口,然后在主界面定义中引用. 这些往往没有独有的名称(出自图中的标题字段). 如果遇到名称冲突,Quicktype会为这样的接口生成一个随机名称,用于引用,由于是随机生成的,它可能显得奇怪地命名(例如. PurpleId, (中文(简体) ), FluffyMarket, (中文(简体) ), TentacledIdentifier 页:1 请忽略这些名称,因为这些类型/界面通常不会在主类型组成之外使用,例如:
export interface Instrument {
id: StickyId;
market?: FluffyMarket;
type: string;
name?: string;
[property: string]: any;
}
export interface StickyId {
BBG?: string;
CUSIP?: string;
FDS_ID?: string;
FIGI?: string;
ISIN?: string;
PERMID?: string;
RIC?: string;
SEDOL?: string;
ticker?: string;
[property: string]: any;
}
export interface FluffyMarket {
BBG?: string;
COUNTRY_ISOALPHA2?: string;
MIC?: string;
name?: string;
[property: string]: any;
}
并且不应被视为该类型结构的计划部分(不应被任何衍生作品所复制). 在应用时,不使用这些子单元的命名,而是用其内容来取而代之. 为这些子单位生成更好的名称通常是一个添加或调整的例子 title 字段.
最后,请注意最新版本的Quicktype(在编写本报告时) 23.0.49) 有一些错误必须围绕:
- 使用目录或.schema.json文件作为源会引发输入类型参数
-s schema被忽略,导致文件被解释为JSON而不是JSON Schema.- 该存储库提供了一种工具(././快速型Util.js) 围绕此错误工作, 方法是列出目录并构建快速类型的呼叫, 每个文件都作为单个源提供 .
- 设置
--nice-property-namesTypeScript 输出选项将崩溃生成器,无法使用. - --debug 设置必须是第一个通过的参数, 否则会被忽略 .