[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;  
}
CentOS校园网Web Portal认证自动化实战 Web Portal认证是一种基于HTTP重定向与表单提交的强制网络准入机制,其原理是网关劫持未认证流量并跳转至登录页,验证通过后通过Cookie维持会话授权。该技术广泛应用于高校、机场、酒店等场景,核心价值在于细粒度访问控制与用户身份绑定。典型应用包括Linux命令行环境下的校园网接入、无GUI设备的自动联网、以及实验室集群的集中认证管理。本文聚焦CentOS系统,深入解析curl、cookie持久化、动态表单参数提取等关键技术环节,提供可调试、可复现、可工程化的完整认证流水线。 阅读详情

相关推荐

【DAY11】超参数调整专题1

核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。

daomingwu1的博客 747

TS报错大全

ts报错大全

Zeng的博客 1万+

RandLA-Net 调通代码1:Windows 11 + Tensorflow 2.4 + S3DIS数据集【踩坑+填坑】

TF不上进啊,学学pytorch

累了就要打游戏 2481

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

LDA主题模型简介及Python实现

一、LDA主题模型简介 LDA主题模型主要用于推测文档的主题分布,可以将文档集中每篇文档的主题以概率分布的形式给出根据主题进行主题聚类或文本分类。 LDA主题模型不关心文档中单词的顺序,通常使用词袋特征(bag-of-word feature)来代表文档。词袋模型介绍可以参考这篇文章:文本向量化表示——词袋模型 - 知乎 了解LDA模型,我们需要先了解LDA的生成模型,LDA认为一篇文章是怎么形成的呢? LDA模型认为主题可以由一个词汇...

weixin_41168304的博客 20万+

【01】总目录——软件设计师50讲通关地图|从零基础到工程师职称

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏的01篇总目录,系统梳理了50篇博文的完整架构与核心逻辑。专栏覆盖软考软件设计师(中级)全部考点,分为导学规划、基础知识、设计模式、下午题专项、算法实战、冲刺模拟、收官进阶七大模块,既兼顾上午题75道单选题的理论攻坚,也聚焦下午题案例分析的解题能力提升。每篇博文均包含考点精讲、真题解析、实战技巧与速记方法,配套可运行代码、解题模板及备考资源。无论你是零基础转行、在校学生还是在职程序员,都能通过这份学习地图明确进度、精准定位薄弱环节,高效搭建知识体系

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1279

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

LVS 负载均衡面试题及参考答案

什么是 LVS 负载均衡?它的主要作用是什么? LVS(Linux Virtual Server)是一个基于 Linux 内核的开源负载均衡项目。它通过将请求流量按照一定的算法分发到后端的多个真实服务器(Real Server)上,从而实现负载均衡的功能。 从原理上来说,LVS 工作在网络层和传输层之间。当客户端发起请求时,请求首先到达 LVS 服务器,LVS 会根据预先设定的规则和算法,比如轮询(Round - Robin)、加权轮询(Weighted Round - Robin)、最少连

大模型大数据攻城狮的专栏 1469

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

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

zhangda89的专栏 804

热力学仿真软件:Fluent_(13).燃烧与化学反应仿真

燃烧模型在热力学仿真软件中扮演着至关重要的角色。Fluent 提供了多种燃烧模型,包括层流预混燃烧模型、湍流预混燃烧模型、非预混燃烧模型、部分预混燃烧模型等。这些模型可以帮助用户模拟不同的燃烧过程,从而更好地理解燃烧现象和优化燃烧系统设计。

kkchenjj的博客 1252

孔雀优化算法(POA)详解:从孔雀智能到优化引擎

孔雀优化算法(POA)是一种新型元启发式优化算法,灵感来源于孔雀的社会行为和智能狩猎策略。该算法将孔雀群体分为雄孔雀、雌孔雀和幼孔雀三个阶层,分别对应全局探索、平衡搜索和局部开发三种搜索策略。通过模拟孔雀的求偶展示、自适应接近和Levy飞行等行为,POA实现了探索与开发的动态平衡。算法采用角色分配机制和位置更新方程,结合参数自适应调整,展现出优于传统算法的全局搜索能力和收敛性能。POA已成功应用于多个优化问题,其生物启发机制为解决复杂优化问题提供了新思路。

qq_42212808的博客 135

【零基础入门TypeScript】环境

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

共同学习、强我国家 552

在 SAP BTP ABAP 环境中构建多租户应用:从架构到实战

ABAP多租户应用架构解析 本文详细介绍了SAP BTP中ABAP环境的多租户应用架构,重点阐述了其核心组件及协作机制。在云原生SaaS模式下,多租户架构使多个客户能共享同一套ABAP平台,同时保持数据和配置隔离。架构包含三层:平台与子账户层、多租户应用与平台服务层(含Approuter、ABAP Solution service、XSUAA等核心组件)、ABAP系统与租户层。文章深入分析了各组件功能,包括Approuter的路由机制、ABAP Solution service的自动资源调度、XSUAA的安

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 214

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万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

OV9734 DATASHEET,完整规格书

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

TypeScript:更好的JavaScript

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

H小志 4476

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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、付费专栏及课程。

余额充值