# @awerlogus/data-types 中文文档

规范地址：https://npmcn.com/package/%40awerlogus/data-types/

版本：2\.0\.0
npm 元数据更新时间：2023-09-25T08:10:34.881Z
中文译文更新时间：2026-11-09T21:10:39.624Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：241 kB，57 个文件
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2021-07-09T01:33:27.447Z
- 最新版本发布：2023-09-25T08:10:34.699Z
- 近 30 天下载量：1729（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：30（近 12 个月 0 个）

## 中文简介

Javascript 有用的数据类型

## 安装

```sh
npm install @awerlogus/data-types
```

也可以使用：`pnpm add @awerlogus/data-types`、`yarn add @awerlogus/data-types`、`bun add @awerlogus/data-types`

## README

# Javascript 有用的数据类型

## 安装

从命令行中运行

```
npm i @awerlogus/data-types
```

## 用法实例

```js
const N = require('@awerlogus/data-types/lib/nullable')
const O = require('@awerlogus/data-types/lib/option')
const E = require('@awerlogus/data-types/lib/either')
const J = require('@awerlogus/data-types/lib/json')

/** @type {(data: J.Json) => data is ReadonlyArray<J.Json>} */
const isArray = Array.isArray

/** @type {(data: unknown) => data is Object} */
const isObject = data => typeof data === 'object'

/** @type {(data: unknown) => data is string} */
const isString = data => typeof data === 'string'

/** @type {(data: J.Json) => data is Record<string, J.Json>} */
const isExactObject = data => isObject(data) && !isArray(data) && N.isSome(data)

/** @type {(data: string) => E.Either<string, string>} */
const handleInput = rawData => {
  const data = J.decode(rawData)

  if (O.isNone(data)) {
    return E.left('Data is not a valid json')
  }

  if (!isExactObject(data)) {
    return E.left('Data is not an object')
  }

  const value = data.key

  if (O.isNone(value)) {
    return E.left('Property \'key\' not found in the object')
  }

  if (!isString(value)) {
    return E.left('Property \'key\' must be a string')
  }

  return E.right(value)
}

const input = '{ "key": "value" }'

const result = handleInput(input)

// If result is a Left value, throws an error
// If result is a Right value, logs it
console.log(E.extractUnsafe(result))
```

## 常见问题

### @awerlogus/data-types 是什么？

Javascript 有用的数据类型

### 如何安装 @awerlogus/data-types？

在项目目录运行 npm install @awerlogus/data-types，或使用 pnpm add / yarn add / bun add。

### @awerlogus/data-types 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/awerlogus\_\_data-types 是否存在。

### @awerlogus/data-types 可以商用吗？

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

### @awerlogus/data-types 的下载量有多少？

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

### @awerlogus/data-types 还在维护吗？

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

