[TypeScript] 编程实践之1: Google的TypeScript代码风格12:Ambients

tsconfig.json tsconfig.json文件配置 阅读详情

12 Ambients

环境声明用于在现有JavaScript代码上提供静态类型。 环境声明与常规声明的不同之处在于,不会为它们生成JavaScript代码。 环境声明不是引入新的变量,函数,类,枚举或命名空间,而是提供“存在”并通过外部方式(例如通过引用

12.1 Ambients声明

环境声明是使用define关键字编写的,可以声明变量,函数,类,枚举,命名空间或模块。

AmbientDeclaration:
	declare AmbientVariableDeclaration
	declare AmbientFunctionDeclaration
	declare AmbientClassDeclaration
	declare AmbientEnumDeclaration
	declare AmbientNamespaceDeclaration

12.1.1 Ambient变量声明

环境变量声明在包含声明空间中引入了一个变量。

AmbientVariableDeclaration:
	var AmbientBindingList ;
	let AmbientBindingList ;
	const AmbientBindingList ;

AmbientBindingList:
	AmbientBinding
	AmbientBindingList , AmbientBinding

AmbientBinding:
	BindingIdentifier TypeAnnotationopt

环境变量声明可以选择包含类型注释。 如果不存在类型注释,则假定变量的类型为Any。

环境变量声明不允许存在初始化程序表达式。

12.1.2 Ambient函数声明

环境函数声明在包含声明空间中引入了一个函数。

AmbientFunctionDeclaration:
	function BindingIdentifier CallSignature ;

可以通过指定多个具有相同名称的环境函数声明来重载环境函数,但是声明多个被视为相同(第3.11.2节)或仅其返回类型不同的重载是错误的。

环境函数声明不能指定函数体,也不允许默认参数值。

12.1.3 Ambient类声明

环境类声明在包含的声明空间中声明类类型和构造函数。

AmbientClassDeclaration:
	class BindingIdentifier TypeParametersopt ClassHeritage { AmbientClassBody }

AmbientClassBody:
	AmbientClassBodyElementsopt

AmbientClassBodyElements:
	AmbientClassBodyElement
	AmbientClassBodyElements AmbientClassBodyElement

AmbientClassBodyElement:
	AmbientConstructorDeclaration
	AmbientPropertyMemberDeclaration
	IndexSignature

AmbientConstructorDeclaration:
	constructor ( ParameterListopt ) ;

AmbientPropertyMemberDeclaration:
	AccessibilityModifieropt staticopt PropertyName TypeAnnotationopt ;
	AccessibilityModifieropt staticopt PropertyName CallSignature ;

12.1.4 Ambient枚举声明

一个环境枚举在语法上等效于一个非环境枚举声明。

AmbientEnumDeclaration:
	EnumDeclaration

环境枚举声明与非环境枚举声明在两个方面有所不同:

  • 在环境枚举声明中,枚举成员声明中指定的所有值都必须归类为常量枚举表达式。
  • 在未指定const修饰符的环境枚举声明中,忽略值的枚举成员声明被视为计算成员(与分配自动递增的值相反)。

否则,以与非环境枚举声明相同的方式处理环境枚举声明。

12.1.5 Ambient命名空间声明

环境命名空间声明声明一个命名空间。

AmbientNamespaceDeclaration:
	namespace IdentifierPath { AmbientNamespaceBody }

AmbientNamespaceBody:
	AmbientNamespaceElementsopt

AmbientNamespaceElements:
	AmbientNamespaceElement
	AmbientNamespaceElements AmbientNamespaceElement

AmbientNamespaceElement:
	exportopt AmbientVariableDeclaration
	exportopt AmbientLexicalDeclaration
	exportopt AmbientFunctionDeclaration
	exportopt AmbientClassDeclaration
	exportopt InterfaceDeclaration
	exportopt AmbientEnumDeclaration
	exportopt AmbientNamespaceDeclaration
	exportopt ImportAliasDeclaration

除了ImportAliasDeclarations之外,AmbientNamespaceElements始终声明导出的实体,无论它们是否包括可选的export修饰符。

12.2 Ambient模块声明

AmbientModuleDeclaration声明一个模块。仅在有助于全局命名空间的源文件的顶层允许这种类型的声明(第11.1节)。 StringLiteral必须指定顶级模块名称。不允许使用相对模块名称。

AmbientModuleDeclaration:
	declare module StringLiteral {  DeclarationModule }

AmbientModuleDeclaration中的ImportRequireDeclaration只能通过顶级模块名称引用其他模块。不允许使用相对模块名称。

如果环境模块声明包括导出分配,则模块内的任何声明指定导出修饰符都是错误的。如果环境模块声明不包含导出分配,则将导出模块中声明的实体,无论其声明是否包括可选的export修饰符。

环境模块是“开放式”的,具有相同字符串文字名称的环境模块声明构成单个模块。例如,模块“ io”的以下两个声明可能位于单独的源文件中。

declare module "io" {  
    export function readFile(filename: string): string;  
}

declare module "io" {  
    export function writeFile(filename: string, data: string): void;  
}

这与单个组合声明具有相同的效果:

declare module "io" {  
    export function readFile(filename: string): string;  
    export function writeFile(filename: string, data: string): void;  
}
Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0) 本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。 阅读详情

相关推荐

一文读懂AI大模型时代的RAG技术

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合检索技术与生成模型的技术架构,旨在通过动态引入外部知识库增强大语言模型(LLM)的生成能力。其核心思想是通过检索系统从外部数据源(如企业知识库、实时文档等)获取相关信息,并将检索结果作为上下文输入生成模型,以提高生成答案的准确性、时效性和专业性

awei0916的专栏 2118

TS报错大全

ts报错大全

Zeng的博客 1万+

2025软考中级《数据库系统工程师》案例模拟题合集

1.【说明】某销售企业正在实施电商平台项目,主要功能模块包括用户中心、商品中心、交易中心、支付中心、营销中心等。其中支付中心模块包括了一个账户表:Account (ano, aname, balance),其中属性含义分别为:账户号,账户名称和账户余额。 假设现在存在事务Ti对账户表Account进行余额的修改,系统记录了修改账户表的日志记录,假设更新日志记录表示为 <Ti,A,V1,V2>,表明事务Ti对账户A执行了一个写操作,写操作前账户A的余额是V1,写操作后账户A的余额为V2。<Ti,D

2301_76902257的博客 2327

typescript TS 错误码大全

1148 错误 Cannot use imports, exports, or module augmentations when '--module' is 'none'. Cannot compile modules unless the '--module' flag is provided with a valid module type. Consider setting the 'module' compiler option in a 'tsconfig.json' file.

weixin_39031037的博客 5017

Figma入门-自动布局

Figma原型图制作内置组件友好,自动布局类似CSS flex,通过布局网格控制对齐、分布、换行等,前端熟悉的同学易上手,参数设置基本一致。

我码玄黄的博客 2174

不止于算力:深入鲲鹏920的片上网络(NoC)与一致性协议HCCS,看华为如何优化数据流转

本文深入解析了鲲鹏920处理器的片上网络(NoC)架构和一致性协议HCCS,揭示了华为如何通过创新的环总线设计和私有协议优化数据流转效率。文章详细介绍了鲲鹏920在多die、多芯片环境下的高效协同机制,包括环总线架构、HCCS协议精妙设计及物理实现创新,为云服务场景提供了高性能解决方案。

weixin_30681121的博客 251

Typescript - enum 枚举类型(数值型枚举 / 字符串枚举 / 常量枚举 / 异构枚举 / 计算枚举成员 / 联合枚举和枚举成员类型 / 运行时的枚举 / 环境枚举 / 对象与枚举)教程

TS enum枚举类型教程,TS枚举详细详解,ts中enum的使用方式,typescript枚举,ts枚举类型详细教程,ts枚举类型enum简单易懂的教程用法,ts枚举小白都能看懂的教程,TS-枚举类型enum,TypeScript中Enum(枚举)的用法,enum枚举类型用法浅析,TypeScript中枚举类型的理解与应用场景,TypeScript枚举类型,TS基础之枚举扩展知识,typescript枚举类型 enum遍历,TS枚举详解,ts中enum枚举类型,ts中枚举的用法,如何在TypeScript

🏆 前端领域优质创作者 4168

AI原生应用在UGC内容审核中的实战经验

AI原生应用(AI-Native Application)——以机器学习模型为核心驱动力,深度整合数据、算法、工程架构的完整系统——为破解这一三角难题提供了全新范式。全链路数据驱动:从数据采集、模型训练到决策优化,形成闭环自治系统,无需人工规则干预多模态深度理解:同时处理文本、图像、音频、视频等多类型内容,理解语义而非简单匹配特征自适应进化能力:通过人机协同反馈持续学习新型违规模式,模型周级迭代成为常态审核效率提升300%:单条视频审核耗时从2.3秒降至0.7秒。

AI算力网络与通信的博客 1149

TypeScript基础入门之模块解析(一)

转载 TypeScript基础入门之模块解析(一) 模块解析 本节假设有关模块的一些基本知识。有关更多信息,请参阅模块文档。 模块解析是编译器用来确定导入所引用内容的过程。 考虑一个导入语句,如import { a } from "moduleA"; 为了检查a的任何使用,编译器需要确切地知道它代表什么,并且需要检查它的定义moduleA。 此时,编译器将询问"moduleA的类型是什...

zhangda89的专栏 804

YOLOv11改进 | 损失函数改进篇 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数

这篇文章介绍了YOLOv11的重大改进,特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体,如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU,还融合了“Focus”思想,创造了一系列新的损失函数。这些组合形式的损失函数超过了二十余种,每种都针对特定的目标检测挑战进行优化。文章会详细探讨这些损失函数如何提高YOLOv11在各种检测任务中的性能,包括提升精度、加快收敛速度和增强模型对复杂场景的适应性。

Snu77的博客 6194

PCL 基于视椎体裁剪点云

PCL 基于视椎体裁剪点云

dayuhaitang1的博客 4083

【零基础入门TypeScript】环境

按照惯例,环境声明保存在具有以下扩展名 (d.ts) 的类型声明文件中上面的文件不会被转编译为 JavaScript。它将用于类型安全和智能感知。声明环境变量或模块的语法如下 -

共同学习、强我国家 552

【中项】案例分析 | 答题技巧 | 备考 

对偏差原因的分析和对项目未来趋势的理解。如果偏差是由一次性事件或特殊原因引起的,那么这种偏差是非典型的,意味着未来的绩效将回归到预期的绩效水平。例如,如果项目初期的CPI小于1,原因是意外的自然灾害导致成本增加,那么这种偏差被认为是非典型的,因为它不太可能在未来重复发生。例如,如果项目初期的CPI小于1,且原因是低效的团队协作,那么这种偏差被认为是典型的,因为它可能在整个项目生命周期中持续存在。在实际应用中,项目经理通常会结合CPI、SPI和偏差趋势图等工具,综合分析偏差的性质,以制定合理的项目控制策略。

静谧、淡雅 1245

TS错误信息列表

错误信息列表code类型英文描述中文描述1002错误Unterminated string literal.未终止的字符串文本。1003错误Identifier expected.应为标识符。1005错误'{0}' expected.应为“{0}”。1006错误A file cannot have a reference to itself.文件不能引用自身。1009错误Trailing comm...

Jinmy的博客 9万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vue3 ts vite 配置别名 导致报 无法找到对应莫模块的错误处理方式

第一步 vite.config.ts alias: { "@": resovePath("src"), }, 第二步 tsconfig.json "compilerOptions": { ... "baseUrl": "./", "paths":{ "@": ["src"], "@/*": ["src/*"], } }, 解决ts 和 vue 文件的相互导入找不到模块 根目录 或 src 下新建 env.d.ts 文件

qq_42451776的博客 3804

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TypeScript:更好的JavaScript

作为编程语言的TypeScript 关于TypeScript,首先要认识的一点就是:它是Anders Hejlsberg的作品。Anders是第一流的编程语言设计师,也是第一流的编译器实现者。作为Object Pascal和C#之父,Anders这次仍然采用了此前的做法:他设计了一种新的语言,并实现了这种语言的编译器,来改进一种已有的语言。但这次又和此前有所不同,此前无论是Object Pasc

H小志 4476

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Typescript 学习笔记 - 环境声明

typescript 环境声明学习

殇尘的博客 554

【TS】1461- 推荐12个值得学习的TypeScript宝库!

TypeScript 是微软开发的一个开源的编程语言,通过在 JavaScript 的基础上添加静态类型定义构建而成。TypeScript 通过 TypeScript 编译器或 Babel 转译为 JavaScript 代码,可运行在任何浏览器和操作系统。下面来分享 10 个值得学习的 TypeScript 宝库!1. TypeScript 官方文档 TypeScript 官方文档,提供了中文版本...

pingan8787 549

【TypeScript】枚举类型:详解常见枚举类型的 7 种用法

在 JavaScript 原生语言中并没有与枚举匹配的概念,而 TypeScript 中实现了枚举类型(Enums),这就意味着枚举也是 TypeScript 特有的语法(相对于 JavaScript)。在 TypeScript 中,我们可以使用枚举定义包含被命名的常量的集合,比如 TypeScript 支持数字、字符两种常量值的枚举类型。我们也可以使用 enum 关键字定义枚举类型,格式是 enum + 枚举名字 + 一对花括弧,花括弧里则是被命名了的常量成员。...

吉帅振博客 2512

[TypeScript] 编程实践之1: Google的TypeScript代码风格1:介绍

TypeScript语言规范1 介绍1.1 环境声明1.2 函数类型1.3 对象类型1.4 结构子类型化1.5 上下文类型推断1.6 类1.7 枚举类型1.8 字符串参数重载1.9 通用类型和功能1.10 命名空间1.11 模块 版本1.8 2016年1月 Microsoft自2012年10月1日起根据Open Web Foundation最终规范协议版本1.0(“ OWF 1.0”)提供此规范。OWF 1.0可以从http://www.openwebfoundation.org/legal/the-owf

魔豆(Magicbean)的博客 1398

gte-small-openmind 实战应用:10个文本相似度计算的实用技巧 [特殊字符]

gte-small-openmind 是一个高效的文本嵌入模型,专门用于文本相似度计算和语义搜索。这个基于BERT架构的模型能够将文本转换为384维的向量表示,在MTEB基准测试中表现出色,是构建智能搜索、推荐系统和内容匹配应用的理想选择。本文将分享10个实用的文本相似度计算技巧,帮助你充分利用这个强大的工具。 ## 📊 为什么选择gte-small-openmind进行文本相似度计算? g

gitblog_00309的博客 534

TypeScript Style Guide

因此,只有当需要添加额外信息时才使用。注释,其它情况下直接省略即可。

Lising的博客 278

TypeScript 学习笔记 之 Module

TS 中的 Module 的概念兼容 ES 2015 中 Module 的概念。 简介 模块中的代码属于模块本身的作用域,而不是全局作用域。也这就意味着没有明确的 export 的话,模块中的 变量,函数,类等对其他模块是不见的。相对的其他模块要使用某一模块的内容需要通过 import 导入。 Export 导出一个声明:通过在声明前加 export 关键词修饰即可导出。 导出语句:也可...

bobo553443的博客 1935

qr-designer高级教程:自定义形状、旋转效果与透明背景设置

qr-designer是一款创新的QR码设计工具,它采用了不依赖纠错机制的新颖设计方法,让用户能够创建独特且具有视觉吸引力的QR码。本教程将详细介绍如何使用qr-designer实现自定义形状、旋转效果和透明背景设置,帮助你轻松设计出专业级的QR码。 ## 准备工作:获取qr-designer项目 首先,你需要获取qr-designer项目的源代码。打开终端,执行以下命令克隆仓库: ```

gitblog_00192的博客 377

Google Style Guide

coding style guide

我与我周旋久,宁作我 186

戴森球计划终极蓝图仓库:从新手到专家的3000+自动化工厂建造指南

你是否曾经在《戴森球计划》中花费数小时设计工厂,却发现产能低下、物流混乱?是否因为复杂的生产线布局而放弃建造更高阶的宇宙矩阵?FactoryBluePrints蓝图仓库正是为解决这些痛点而生——这是一个汇集了3000+个优化工厂蓝图的开源宝库,让你轻松实现从新手到专家的自动化建造飞跃。 ## 从零到宇宙矩阵:蓝图仓库的三大核心价值 FactoryBluePrints不仅仅是一个蓝图集合,它是整

gitblog_00879的博客 679
上一篇: [TypeScript] 编程实践之1: Google的TypeScript代码风格11:Script和Modules
下一篇: [TypeScript] 编程实践之1: Google的TypeScript代码风格13:语法
魔豆Magicbean
博客等级 码龄19年 146粉丝 742原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值