新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/14 19:43:23来源:尧图网络
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

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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