# @browsery/type-is 中文文档

规范地址：https://npmcn.com/package/%40browsery/type-is/

版本：2\.0\.2-rev\.1
npm 元数据更新时间：2026-10-07T15:32:35.026Z
中文译文更新时间：2026-11-08T16:34:13.465Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：62.5 kB，4 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2023-10-17T13:51:58.925Z
- 最新版本发布：2026-10-07T15:32:34.691Z
- 近 30 天下载量：3644（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：16（近 12 个月 3 个）

## 中文简介

浏览器兼容类型- is 模块

## 安装

```sh
npm install @browsery/type-is
```

也可以使用：`pnpm add @browsery/type-is`、`yarn add @browsery/type-is`、`bun add @browsery/type-is`

## README

# @ 浏览/ 类型- is

浏览器兼容"type-is"!

此模块捆绑 [类型是](https://www.npmjs.com/package/type-is) 浏览器模块 !

# 类型是

[![NPM Version](https://badgen.net/npm/v/type-is)](https://npmjs.org/package/type-is) [![NPM Downloads](https://badgen.net/npm/dm/type-is)](https://npmjs.org/package/type-is) [![Node.js Version](https://badgen.net/npm/node/type-is)](https://nodejs.org/en/download) [![Build Status](https://badgen.net/github/checks/jshttp/type-is/master?label=ci)](https://github.com/jshttp/type-is/actions/workflows/ci.yml) [![Test Coverage](https://badgen.net/coveralls/c/github/jshttp/type-is/master)](https://coveralls.io/r/jshttp/type-is?branch=master)

推断请求的内容类型.

## 安装

这是一个 [节点.js](https://nodejs.org/en/) 模块 [npm 登记](https://www.npmjs.com/)。安装使用 [`npm install` 命令](https://docs.npmjs.com/getting-started/installing-npm-packages-locally)数字 :

```sh
$ npm install type-is
```

## API 密码

```js
var http = require('http')
var typeis = require('type-is')

http.createServer(function (req, res) {
  var istext = typeis(req, ['text/*'])
  res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text')
})
```

### 类型( 请求, 类型)

检查是否 `request` 这是其中之一 `types`如果请求没有机构, 即使有这样的一个 `Content-Type` 标题,然后 `null` 已返回。 如果 `Content-Type` 信头无效或不匹配任何 `types`,则 `false` 已返回。 否则,将返回匹配类型的字符串.

这个 `request` 参数是 Node.js HTTP 请求。 这个 `types` 参数是一个类型字符串的数组.

每一类型 `types` 数组可以是以下之一:

-   文件扩展名, 如 `json`。如果匹配,此名称将返回.
-   类似 MIME 类型的 `application/json`。 。 。 .
-   带有通配符的 MIME 类型 `*/*` 或者说 `*/json` 或者说 `application/*`。 。 。 . 如果匹配, 完整的 MIME 类型将返回 .
-   这样的后缀 `+json`。这可以结合一个通配符,例如 `*/vnd+json` 或者说 `application/*+json`。完整 MIME 类型将返回 如果匹配的话.

说明投入和返回值的一些例子:

```js
// req.headers.content-type = 'application/json'

typeis(req, ['json']) // => 'json'
typeis(req, ['html', 'json']) // => 'json'
typeis(req, ['application/*']) // => 'application/json'
typeis(req, ['application/json']) // => 'application/json'

typeis(req, ['html']) // => false
```

### typeis.has Body( 请求)

如果给定的返回布尔 `request` 拥有一具尸体,无论 `Content-Type` 头曰.

拥有一具尸体与身体有多大(可能是0字节)没有关系. 这类似于文件存在的工作原理. 如果真的存在,那么这个 表示有数据可以从 Node.js 请求流读取.

```js
if (typeis.hasBody(req)) {
  // read the body, since there is one

  req.on('data', function (chunk) {
    // ...
  })
}
```

### type.is( 中间类型, 类型)

检查是否 `mediaType` 这是其中之一 `types`如果 `mediaType` 无效 或不匹配任何一个 `types`,则 `false` 已返回。 否则,a 返回匹配类型的字符串.

这个 `mediaType` 参数是: [媒体类型](https://tools.ietf.org/html/rfc6838) 绳子。 这个 `types` 参数 是类型字符串的数组.

每一类型 `types` 数组可以是以下之一:

-   文件扩展名, 如 `json`。如果匹配,此名称将返回.
-   类似 MIME 类型的 `application/json`。 。 。 .
-   带有通配符的 MIME 类型 `*/*` 或者说 `*/json` 或者说 `application/*`。 。 。 . 如果匹配, 完整的 MIME 类型将返回 .
-   这样的后缀 `+json`。这可以结合一个通配符,例如 `*/vnd+json` 或者说 `application/*+json`。完整 MIME 类型将返回 如果匹配的话.

说明投入和返回值的一些例子:

```js
var mediaType = 'application/json'

typeis.is(mediaType, ['json']) // => 'json'
typeis.is(mediaType, ['html', 'json']) // => 'json'
typeis.is(mediaType, ['application/*']) // => 'application/json'
typeis.is(mediaType, ['application/json']) // => 'application/json'

typeis.is(mediaType, ['html']) // => false
```

### typeis.match(预期,实际)

匹配类型字符串 `expected` 与 `actual`,记入通配符. 通配符只能存在于介质类型中的子类型部分,并且只能使用 输入 `expected` 价值(截至 `actual` 应该是真正的媒体类型。 A 类 后缀仍然可以包含,即使带有通配符子类型。 如果输入是 畸形, `false` 将返回.

```js
typeis.match('text/html', 'text/html') // => true
typeis.match('*/html', 'text/html') // => true
typeis.match('text/*', 'text/html') // => true
typeis.match('*/*', 'text/html') // => true
typeis.match('*/*+json', 'application/x-custom+json') // => true
```

### 类型. 正常化( 类型)

规范 a `type` 绳子。 这项工作通过以下方式进行:

-   如果 `type` 不是绳子, `false` 已返回.
-   如果字符串开始 `+` (所以这是一个 `+suffix` 单手像 `+json`, (中文(简体) ), 然后扩充,以包含完整的通配符符号 `*/*+suffix`。 。 。 .
-   如果字符串包含一个 `/`,然后返回为类型.
-   否则字符串被假定为文件扩展名,映射出媒体类型是 返回,或 `false` 没有地图.

其中包括两个特殊的绘图:

-   `'multipart'` - > (中文) `'multipart/*'`
-   `'urlencoded'` - > (中文) `'application/x-www-form-urlencoded'`

## 实例

### 实例正文解析器

```js
var express = require('express')
var typeis = require('type-is')

var app = express()

app.use(function bodyParser (req, res, next) {
  if (!typeis.hasBody(req)) {
    return next()
  }

  switch (typeis(req, ['urlencoded', 'json', 'multipart'])) {
    case 'urlencoded':
      // parse urlencoded body
      throw new Error('implement urlencoded body parsing')
    case 'json':
      // parse json body
      throw new Error('implement json body parsing')
    case 'multipart':
      // parse multipart body
      throw new Error('implement multipart body parsing')
    default:
      // 415 error code
      res.statusCode = 415
      res.end()
      break
  }
})
```

## 许可证

[麻省理工学院](https://npmcn.com/package/%40browsery/type-is/LICENSE)

## 常见问题

### @browsery/type-is 是什么？

浏览器兼容类型- is 模块

### 如何安装 @browsery/type-is？

在项目目录运行 npm install @browsery/type-is，或使用 pnpm add / yarn add / bun add。

### @browsery/type-is 支持 TypeScript 吗？

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

### @browsery/type-is 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @browsery/type-is 可以商用吗？

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

### @browsery/type-is 的下载量有多少？

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

### @browsery/type-is 还在维护吗？

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

