# @foxglove/omgidl-parser 中文文档

规范地址：https://npmcn.com/package/%40foxglove/omgidl-parser/

版本：1\.2\.2
npm 元数据更新时间：2025-10-13T17:39:09.064Z
中文译文更新时间：2026-11-15T10:40:19.017Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40foxglove/omgidl-parser
原文对照：https://npmcn.com/package/%40foxglove/omgidl-parser/?lang=original
项目主页：https://github.com/foxglove/omgidl#readme
源码仓库：https://github.com/foxglove/omgidl

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：464 kB，67 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2023-07-13T18:27:38.663Z
- 最新版本发布：2025-10-13T17:39:08.601Z
- 近 30 天下载量：190619（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 0 个）

## 中文简介

分析 OMG IDL 以简化序列化定义

## 安装

```sh
npm install @foxglove/omgidl-parser
```

也可以使用：`pnpm add @foxglove/omgidl-parser`、`yarn add @foxglove/omgidl-parser`、`bun add @foxglove/omgidl-parser`

## README

# OMG IDL 计划分析器

> _OMG IDL 解析( 去) 串行化信件定义_

[![npm version](https://img.shields.io/npm/v/@foxglove/omgidl-parser.svg?style=flat)](https://www.npmjs.com/package/@foxglove/omgidl-parser)

此软件包提供了分析原始文件的功能 `.idl` 切入解析,平整的信息定义.

输出定义可以和指定的根 schema 名称字符串一起传递给序列器 `@foxglove/omgidl-serialization` 以读取和写入 CDR、 XCDR1 和 XCDR2 信件.

## 示例

```TypeScript

const schemaString = `
// Generated by https://github.com/foxglove/schemas

module foxglove {
// A vector in 3D space that represents a direction only
struct Vector3 {
  double x;
  double y;
  double z;
};
};

module foxglove {
struct Quaternion {
  double x;
  double y;
  double z;
  @default(1.0)
  double w;
};
};

module foxglove {
// A position and orientation for an object or reference frame in 3D space
struct Pose {
  // Point denoting position in 3D space
  Vector3 position;
  // Quaternion denoting orientation in 3D space
  Quaternion orientation;
};
};
`;

const definitions = parseIDL(schemaString);
```

`definitions` 结果是:

```JavaScript
[
  {
    name: "foxglove::Vector3",
    aggregatedKind: "struct",
    definitions: [
      {
        name: "x",
        isComplex: false,
        type: "float64",
      },
      {
        name: "y",
        isComplex: false,
        type: "float64",
      },
      {
        name: "z",
        isComplex: false,
        type: "float64",
      },
    ],
  },
  {
    name: "foxglove::Quaternion",
    aggregatedKind: "struct",
    definitions: [
      {
        name: "x",
        isComplex: false,
        type: "float64",
      },
      {
        name: "y",
        isComplex: false,
        type: "float64",
      },
      {
        name: "z",
        isComplex: false,
        type: "float64",
      },
      {
        name: "w",
        annotations: {
          default: {
            name: "default",
            type: "const-param",
            value: 1,
          },
        },
        defaultValue: 1,
        isComplex: false,
        type: "float64",
      },
    ],
  },
  {
    name: "foxglove::Pose",
    aggregatedKind: "struct",
    definitions: [
      {
        isComplex: true,
        name: "position",
        type: "foxglove::Vector3",
      },
      {
        isComplex: true,
        name: "orientation",
        type: "foxglove::Quaternion",
      },
    ],
  },
]
```

## API 密码

`parseIDL(schema: string)` - 粗浅的 `.idl` 用于解析,平分定义的策略字符串.

输出定义的TypeScript类型也可用.

## OMG IDL 子集支持

注:数字类似 `7.4.1` 参照本节 [OMG IDL 规格](https://www.omg.org/spec/IDL/4.2/PDF)。 。 。 .

-   一般支持的特性
    
    -   `7.4.1` 构建块核心数据类型(下文除外)
    -   扩展数字类型的支持 `uint8`, (中文(简体) ), `int8` . `uint64`, (中文(简体) ), `int64`
        -   说明 `7.4.13` 未完全支持构建块扩展数据类型
    -   字数(带有一些十六进制、字符和 `wide`\- 类型例外)
    -   空白、 水平和垂直标签、 新行、 窗体种子、 注释( 集合、 “ 空白” ) 被忽略, 除非用于分隔符号
    -   解析通用说明( 仅默认值读入 AST)
    -   工会和案件
    -   使用 `@value` 注释
    -   所有 XCDR 扩展类型 : `@final`, (中文(简体) ), `@appendable`,以及 `@mutable`
    -   `const Color color = RED;` 财务报告和审定财务报表 `const Color color = Color::RED;` 被支持.
-   不支持的特性
    
    -   `native` 声明
    -   转发声明
    -   常数表达式
    -   无操作符(正数/负数之外)
    -   默认值注释类型检查
    -   标识符前缀 `::` 范围
    -   总计类型继承
    -   注释定义
    -   从注解( 如 `@autoid`是因为 `HASH` 财务报告和审定财务报表 `SEQUENTIAL` 缩略语)
    -   地图类型
    -   `@autoid(HASH)` 可变合计类型
    -   `7.2.6.1` - 八面体整数不支持(`014`(中文(简体) )
    -   `7.2.6.2.1` 宽字符和宽字符串的支持有限
        -   可以读到计划,但只考虑 `uint8`
        -   宽字符和字符串字元不支持(`L'X'`(中文(简体) )
    -   `7.2.6.3` - 不支持宽字符串文字
    -   `7.2.3.1` - 我们没有明确检查相撞情况,我们使用对案件敏感的识别器,而IDL则要求识别器对案件不敏感。 警告: 这会导致消息读取不正确.
    -   `7.4.2`\- 说吧`7.4.16` 不支持扩展的 IDL 构件
    -   与其他阵列类型防御或struct成员节点组成可变大小的阵列类型防御.
-   不支持的引用和类型解析特性
    
    -   数字类型检查是否持续使用 。 这意味着,如果使用一个打错的常数,它可能造成消息读取错误,或者不匹配的类型会在去序列化消息中出现.
    -   我们不执行基于类型值范围 的常数在计划

## 常见问题

### @foxglove/omgidl-parser 是什么？

分析 OMG IDL 以简化序列化定义

### 如何安装 @foxglove/omgidl-parser？

在项目目录运行 npm install @foxglove/omgidl-parser，或使用 pnpm add / yarn add / bun add。

### @foxglove/omgidl-parser 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @foxglove/omgidl-parser 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @foxglove/omgidl-parser 可以商用吗？

@foxglove/omgidl-parser 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @foxglove/omgidl-parser 的下载量有多少？

根据 npm 官方下载统计，@foxglove/omgidl-parser 在 2026/10/16 – 2026/11/14 这 30 天内被下载 190,619 次，日均约 6,354 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @foxglove/omgidl-parser 还在维护吗？

最新版本 1\.2\.2 发布于 2025/10/14（1\.1 年前）；至今共发布 13 个版本，其中过去 12 个月发布了 0 个；首次发布于 2023/07/14。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

