# 类型

## 功能

BT 是动态类型语言，变量本身不固定类型，值在运行时携带类型。可以使用 `type(value)` 查看脚本可见类型名。

## 语法

```bt
type(value)
```

## 内置基础类型

| 类型 | 说明 |
| ------ | ------ |
| `Int` | 整数。 |
| `Float` | 浮点数。 |
| `Bool` | 布尔值。 |
| `String` | 字符串。 |
| `Array` | 数组。 |
| `Object` | 对象。 |
| `Null` | 显式空值或失败值。 |
| `Empty` | 缺失值。 |
| `Regex` | 正则表达式。 |
| `Fn` | 函数。 |
| `Class` | 类。 |
| `Instance` | 类实例。 |

## 标准库对象类型

| 类型 | 说明 |
| ------ | ------ |
| `Fs` | 文件系统对象。 |
| `Date` | 日期时间对象。 |
| `Math` | 全局数学对象。 |
| `Base64` | Base64 编解码对象。 |
| `Mysql` | MySQL 构建器对象。 |
| `Reqwest` | HTTP 请求构建器对象。 |
| `Process` | 进程构建器或子进程对象。 |
| `Net` | 网络服务或连接对象。 |
| `Device` | 设备通信对象。 |

## 代码示例

```bt
println type(123)
println type('BT')
println type([1, 2, 3])
println type({name: 'BT'})
```

## 类型转换

```bt
int('12')
float('12.5')
string(123)
bool(1)
array('abc')
object('{"name":"BT"}')
```

## 注意事项

- `empty` 表示缺失值：表达式无产出、变量未初始化、字段或下标不存在、函数参数未传入。
- `null` 表示显式空值或失败值：用户写入的 `null`、JSON null、数据库 NULL、解析或转换失败。
- `json(empty)` 或包含 `empty` 的数组、对象序列化为 JSON 时会输出标准 JSON `null`。
