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

读取FileSystemEntry条目的正确方法 解决TS报错及API替代方案咨询

关于API状态与TypeScript报错的说明
  • 你当前使用的是早期Chrome推出的非标准「文件与目录条目API」,该API从始至终未被W3C正式标准化,因此MDN一直标注为实验性状态。
  • 目前W3C已经推出了标准化的File System Access API作为官方替代,旧API仅为了向后兼容被浏览器保留实现,不再进行功能更新和标准化推进,相当于处于隐性废弃状态,所以会给你“既实验又疑似废弃”的感知。
  • TypeScript报错是因为旧API不属于Web标准,默认的TS核心类型库没有包含对应的类型定义,临时兼容可以安装@types/filesystem第三方类型包解决报错。
官方替代方案

官方推荐使用已经标准化的File System Access API实现目录读取功能,示例代码如下:

async function readDirectory(handle: FileSystemDirectoryHandle): Promise<(FileSystemFileHandle | FileSystemDirectoryHandle)[]> {
  const entries: (FileSystemFileHandle | FileSystemDirectoryHandle)[] = []
  // 直接用异步迭代器遍历目录条目
  for await (const entry of handle.values()) {
    entries.push(entry)
  }
  return entries
}

新旧API核心差异:

  • 旧API基于回调实现异步逻辑,新API原生支持Promise与异步迭代器,代码更简洁易维护
  • 新API的类型定义已经被TypeScript默认内置,不会出现类型报错问题
  • 新API还支持文件写入、持久化授权、跨上下文访问等更多扩展能力,兼容性和实现一致性远高于旧版API

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:39:03