新闻详情

新闻详情

首页 / 资讯中心 / 详情

TypeScript 7.1 为 ambient 模块声明引入 import attributes:让类型匹配感知导入属性

发布时间:2026/9/25 6:52:54来源:尧图网络
TypeScript 7.1 为 ambient 模块声明引入 import attributes:让类型匹配感知导入属性
文档教程【免费下载链接】typescript-bookThe Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.项目地址https://gitcode.com/gh_mirrors/typ/typescript-book点击查看免费下载导读本文解读 TypeScript 7.1 的一项编译器新能力——pattern ambient module 声明通配符形式的*.css、*.txt等模块声明现在可以携带 import attributes 类型使 TypeScript 能够根据import ... with { type: css }这类导入属性区分不同模块的声明。你将理解其匹配规则可赋值性与最具体属性类型优先、当前限制、声明合并行为以及项目如何自行定义所需的 ambient 模块。该特性已合并进 TypeScript 7.1.0 Beta 里程碑对应 PR #63931由 TypeScript 的原生Go 实现的编译器提供支持。背景import attributes 是什么在 TypeScript 5.3 中引入的 Import Attributes导入属性为 import 语句附加元信息告诉运行时如何处理模块例如 JSON。它让导入意图更清晰并契合 Content Security PolicyCSP对资源加载的安全要求。TypeScript 只负责校验语法合法性实际解释交由运行时完成。本书英文版在 others.md 的 Import Attributes 小节中给出了两种标准写法静态导入import config from ./config.json with { type: json };动态导入const config import(./config.json, { with: { type: json } });此前 import attributes 只是让运行时知道如何处理模块而 7.1 的新特性把属性信息也纳入了类型系统——当导入携带属性时TypeScript 可以据此解析到对应的 ambient 模块声明实现按属性区分模块类型。基础回顾ambient 模块声明ambient环境声明是描述 JavaScript 代码类型的.d.ts文件通常用于为现有 JS 库补充类型、或在 JS 文件中标注类型详见 exploring-the-type-system.md 的 Ambient Declarations 小节。其中declare关键字可以在不导入实现的情况下提供类型定义。常见的类型包通过npm install --save-dev types/library-name安装自定义声明则可用 triple-slash 引用引入/// reference path./library-types.d.ts /与此相关的还有 ambient enums——在.d.ts中声明、无对应实现的枚举类型。ambient 机制的整体思路是类型描述与实现分离由编译器在编译期使用。而pattern ambient module通配符 ambient 模块则用*匹配一类文件路径例如declare module *.css可以为任意 CSS 导入提供类型。7.1 的改动正是落在这一形态上。核心变化模式模块声明可声明导入属性类型TypeScript 7.1 的编译器现在支持在 pattern ambient module 声明上声明 import-attribute 类型。这意味着声明本身可以区分带不同属性的导入例如区分type: css与type: text。从语义上理解一个导入语句可以写成import ./app.css with { type: css }; import ./README.txt with { type: text };过去无论属性是什么*.css与*.txt的声明都只能按路径模式匹配现在声明还可以声明属性类型从而对以某种属性导入的同模式模块给出不同的类型描述示意性声明形式如下具体语法以 TypeScript 官方发布为准// 示意带属性类型的 pattern ambient 声明 declare module *.css with { type: css } { const styles: { [key: string]: string }; export default styles; }匹配规则可赋值性 最具体属性类型文档明确描述了匹配的两条核心规则可赋值性assignability匹配当导入携带属性时TypeScript 将其与对应的 pattern ambient module 声明做匹配匹配基础是属性类型间的可赋值性关系。最具体优先如果多个声明都匹配同一导入TypeScript 会选择属性类型最具体的那一个。最具体意味着一个仅声明{ type: css }的声明比一个声明更宽泛类型如{ type: string }的声明更优先多个字符串字面量类型的属性可以形成更细粒度的区分。这为库作者按属性粒度提供不同类型打开了空间——例如同一个模块路径在type: css属性下与在默认导入下可以拥有不同的类型形状。当前限制字符串字面量类型 合并规则本次实现刻意收窄了能力边界文档给出了两点明确约束属性类型目前只能是普通属性且值必须是字符串字面量类型string literal types。换言之暂不支持计算属性、符号键、对象/数组形态的属性值等复杂形式。合并规则具有相同 pattern 且属性类型完全相同的声明可以合并与 TypeScript 的声明合并机制一致而属性类型不同的声明保持彼此独立互不覆盖。这意味着设计者可以按属性把同一模式拆成多份声明分别描述只要属性类型互不相同即可共存。兼容性与工具链现状该改动是为 TypeScript 7.1.0 Beta 里程碑合并的。需要注意两点不新增内置声明标准库不会因此自动包含 CSS 或 text 导入的声明项目和工具仍需自行定义所需的 ambient 模块这也是为什么理解上述声明写法依然重要。原生编译器上下文TypeScript 7.0 起编译器已切换为新的 Go 实现见 TypeScript News 索引中关于 7.0 发布的条目本特性属于这套原生编译器持续推进的一部分。另外从版本演进角度看asserts形式的旧导入关键字在 TypeScript 6.0 已弃用、7.0 成为硬错误见 getting-started-with-typescript.md 的弃用清单因此with { ... }是当前及后续版本中唯一推荐写法——7.1 将属性信息接入类型系统正是建立在这一语法基础之上。实践建议工具/库作者若你的工具链为*.css、*.txt、*.svg等资源提供类型可在 7.1 发布后为带属性的导入补充更精确的声明利用最具体优先规则为不同属性提供不同类型。应用开发者7.1 Beta 前仍需像以往一样自行编写或安装 ambient 声明升级后可以验证属性感知的匹配是否修正了此前所有模式导入共享同一类型导致的误报。验证方式在 7.1.0 Beta 及以上版本中为同一 pattern 声明多份属性类型不同的 ambient 模块再以对应属性导入观察编译器是否选择最具体的声明——这是验证该特性落地的最直接手段。来源与延伸阅读本特性来源于 TypeScript 已合并的拉取请求Support import attributes on ambient modulesPR #63931可在 TypeScript 官方仓库中查看完整讨论与测试用例。关联阅读others.md 的 Import Attributes 小节、exploring-the-type-system.md 的 Ambient Declarations 小节、TypeScript News 总览。赞分享文档教程【免费下载链接】typescript-bookThe Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source.项目地址https://gitcode.com/gh_mirrors/typ/typescript-book点击查看免费下载相关推荐TypeScript 7.1 新特性import attributes 让 pattern ambient module 声明按导入属性精确匹配TypeScript 7.1 新特性import attributes 让 pattern ambient module 声明按导入属性精确匹配 导读 Ty文档教程TypeScript 7.1 新特性import attributes 驱动的 ambient module模式环境模块声明匹配TypeScript 7.1 新特性import attributes 驱动的 ambient module模式环境模块声明匹配 发布日期2026 年文档教程TypeScript 7.1 将导入属性引入环境模块声明从 The Concise TypeScript Book 仓库看属性感知模块类型解析TypeScript 7.1 将导入属性引入环境模块声明从 The Concise TypeScript Book 仓库看属性感知模块类型解析 The Con文档教程上一篇如何永久保存微信聊天记录3个步骤掌握WeChatMsg数据备份完整方案下一篇如何永久保存微信聊天记录3步完成数据备份的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

华为Atlas 300V部署YOLO:模型转换与推理加速实战 2026/9/25 7:26:33

华为Atlas 300V部署YOLO:模型转换与推理加速实战

上一回咱们聊过不少推理加速的坑,这次直接上一个硬核话题:把YOLO搬上华为Atlas 300V 24G。先说结论,Atlas 300V 24G不是普通的显卡,它标准的称呼是AI推理加速卡。很多人一上来就把它当成GPU去写代码,结果连环境都跑不通…

阅读更多 →
脉搏信号识别实战:小波预处理与机器学习分类全流程 2026/9/25 7:26:33

脉搏信号识别实战:小波预处理与机器学习分类全流程

简介:一个由同济大学完成的脉搏信号分析与识别项目,聚焦小波变换在非平稳生物医学信号处理中的应用,面向生物医学工程学生、信号处理研究者及智能医疗开发者。资料对原始脉搏信号进行去噪、平滑滤波等预处理,再通过小波变换提取多…

阅读更多 →
Atlas 300V/300I昇腾推理卡部署YOLOv8实战:从选型到调优全记录 2026/9/25 7:26:33

Atlas 300V/300I昇腾推理卡部署YOLOv8实战:从选型到调优全记录

1. 为什么我最终选择了 Atlas,以及这张卡到底改变了什么先说个背景。我这边主要做的是边缘侧的视觉检测项目,核心场景是工厂质检和园区安防,模型一直用的 YOLOv5s 和 YOLOv8s,原来的方案是 GPU 推理,一张 GTX 1660 Sup…

阅读更多 →
四元数散度与旋度:姿态场微积分及其工程应用 2026/9/25 7:26:26

四元数散度与旋度:姿态场微积分及其工程应用

我们得先承认一件事:看到“四元数散度和旋度”这个组合,绝大多数人的第一反应是“这俩东西怎么会在一个标题里”。四元数不是用来算旋转的吗?散度和旋度不是向量分析里的场论概念吗?这两拨人平时在三维引擎和流体仿真里各干各的&a…

阅读更多 →
Atlas 300V 24G部署YOLO全攻略:环境搭建、模型转换与性能调优 2026/9/25 7:26:26

Atlas 300V 24G部署YOLO全攻略:环境搭建、模型转换与性能调优

最近有朋友在群里连着问了我两个问题:“Atlas 300V 24G是不是运算加速卡?”“这卡能不能拿来部署YOLO?”巧的是,我这大半年就在跟昇腾Atlas的推理卡打交道,从环境搭建到模型转换再到上线调优,该踩的坑基本都…

阅读更多 →
Atlas 300V 24G:AI推理加速卡,YOLO部署与性能调优实战 2026/9/25 7:26:20

Atlas 300V 24G:AI推理加速卡,YOLO部署与性能调优实战

上周有个朋友问我:Atlas 300V 24G到底是不是运算加速卡?这个问题听着简单,真要解释清楚,得从华为Atlas整个产品线说起。简单说,它是一块AI推理加速卡,不是传统意义上的“运算加速卡”,更不是GPU…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉