@ikenxuan/amagi
使用指南

类型模式

了解 amagi 的类型模式系统

类型模式

amagi 提供了两种类型模式,让你可以在类型安全和灵活性之间做出选择。

类型模式说明

返回 any 类型,容错性更强,适合快速开发或处理未知响应结构。

const  = await ...({ 
  : 'BV1xx411c7mD' 
})

.data
data: any

错误响应时数据为空

响应数据,类型由泛型 T 决定

返回严格类型定义,提供完整的类型提示和编译时检查。

const  = await ...({ 
  : 'BV1xx411c7mD',
  : 'strict'
})

.data
data: BiliOneWork

错误响应时数据为空

响应数据,类型由泛型 T 决定

使用场景

推荐使用 strict 模式

  • 需要完整的 IDE 类型提示
  • 进行类型安全的数据处理
  • 编写生产级代码
  • 需要编译时类型检查

推荐使用 loose 模式

  • 快速原型开发
  • 处理可能变化的 API 响应
  • 需要访问未在类型定义中声明的字段
  • 调试和探索 API

类型定义时间:2025-02-02

严格类型基于接口响应定义,随时间推移可能缺少平台新增的字段。如果需要访问新字段,可以使用 loose 模式或进行类型断言。

示例

B站视频信息

const  = await ...({ 
  : 'BV1xx411c7mD',
  : 'strict'
})

if (.) {
  // 完整类型提示
  .(..)
  .(...name)
  .(...view)
}

抖音搜索

// 搜索用户
const  = await ...({
  : '关键词',
  : 'user',
  : 'strict'
})

// 搜索视频
const  = await ...({
  : '关键词',
  : 'video',
  : 'strict'
})

类型断言

如果需要在 strict 模式下访问未定义的字段:

const  = await ...({ 
  : 'BV1xx411c7mD',
  : 'strict'
})

if (.) {
  // 使用类型断言访问未定义字段
  const  = (. as any).newField
}

泛型类型

amagi 导出了相关的类型定义,方便你在代码中使用:

import type { 
  , 
  ,
  ,
  ,
  
} from '@ikenxuan/amagi'

On this page