You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何JavaScript将YAML解析后的列表识别为对象?

为什么YAML解析后的数组用typeof返回'object'而非'list'?

问题场景

配置文件config.yml内容:

key1:
  list: ['x', 'x', 'x']

使用yaml包解析的代码:

import { parse } from 'yaml';
import { readFileSync } from 'fs';

const parsed = parse(readFileSync('config.yml', 'utf-8'));

console.log(typeof parsed['key1']['list']) // 此处返回object而非预期的"list"

原因解释

JavaScript里不存在list这个数据类型。YAML中的数组会被yaml包解析成JavaScript的数组(Array),但在JS中,typeof操作符对数组的返回值就是'object'——这是JS语言本身的特性,和yaml包的解析逻辑无关。

如果要判断某个值是否为数组,应该使用Array.isArray()方法,示例:

console.log(Array.isArray(parsed['key1']['list'])) // 会返回true

另外,你代码里有个大小写错误:ReadFileSync应该写成小写开头的readFileSync,否则会触发未定义变量的报错。


内容的提问来源于stack exchange,提问作者thisismynewdisplayname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:00:05