[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;  
}
逆向拆解dy接口a_bogus 1.0.1.19版本核心算法(纯算版)第二部分 本文深入解析了dy接口a_bogus 1.0.1.19版本的核心算法,重点介绍了逆向分析的基础方法论、魔改Base64编码识别与还原、随机数生成与位运算解析等关键技术。通过详细的代码示例和实用技巧,帮助开发者掌握逆向工程中的关键步骤,特别是针对a_bogus参数的生成逻辑和混淆处理。 阅读详情

相关推荐

Unity PSD分层导入插件ps2d原理与实战指南

PSD作为UI设计主流源文件,其图层结构、混合模式、文字矢量属性等核心语义在传统引擎导入中普遍丢失,导致设计还原度低、多语言适配难、运行时不可控。ps2d通过深度解析PSD二进制规范,将图层映射为GameObject树、文字转为TextMeshPro可编辑组件、形状生成矢量Mesh、蒙版与图层样式编译为定制Shader,实现设计意图的精准程序化表达。该方案显著提升UI开发效率,支撑高保真还原、动态修改、分辨率自适应及运行时热重载等工程需求,是Unity中连接设计师与程序员的关键工作流中枢。

weixin_32943857的博客 348

TS报错大全

ts报错大全

Zeng的博客 1万+

华为2288H-V5服务器做raid的详细步骤

操作步骤 服务器启动界面 按del键进入设置输入密码,2288H-v5默认密码是Admin@9000 移动光标选择device manager 驱动管理选择configurationutility 配置管理 选择main menu 主菜单 选择第一个 configuration management 配置管理 选择create virtual driver 创建虚拟驱动选择select RAID level 选择RAID等级选择level-5 选择select drivers 选择驱......

weixin_46041124的博客 1万+

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

Cesium 相机操作

Cesium 提供了三种方式对相机的位置进行摆放。

虎康的博客 2588

【WRF数据准备】制备月尺度静态地理数据:LAI、Fpar、LUCC

【WRF数据准备】制备月尺度静态地理数据:LAI、Fpar、LUCC

WW、forever的博客 803

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

海思3559av100平台lan9500模块调试记录

1. 前言 通过USB2.0接口扩展一路百兆虚拟网口 2. 配置lan9500驱动 make ARCH=arm64 menuconfig 开启LAN95XX驱动,编译进内核 保存内核配置 3. 编译内核 make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- uImage -j 20 cd ../../arm-trusted-firmware/arm-trusted-firmware ./mk.sh cp ...

jzwjzw19900922的博客 908

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

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

zhangda89的专栏 804

深度解析与实战:长短时记忆网络(LSTM)在股票走势预测中的应用(基于Python + PyTorch)

本文全面探讨了LSTM在股票价格预测中的应用,从理论基础到实践操作。文章首先强调了股票市场预测的重要性,并介绍了LSTM网络结构及其在处理时间序列数据中的优势。接着,详细说明了数据预处理的关键步骤,包括数据收集、清洗、特征选择和归一化。文章还讨论了LSTM模型的构建、训练和评估,并提供了Python及PyTorch的实操案例。最后,总结了LSTM在股票预测的成果,并提出了未来研究的方向,如模型优化和特征工程,旨在帮助读者掌握LSTM在股票价格预测中的应用,并探索提升模型性能的方法。

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

AUTOSAR知识点:PDUR(PDU Router)基础知识

通过定义路由表和实现相应的路由和缓冲逻辑,PDUR能够确保PDU在不同ECU之间的可靠传输。在上述示例中,我们定义了一个简单的PDUR路由表,其中列出了源ECU和目标ECU之间的映射关系。当收到来自源ECU的PDU时,PDUR模块会根据路由表查找目标ECU,并将PDU传输到相应的目标ECU。PDUR的主要功能是将接收到的PDU从一个ECU路由到另一个ECU,并确保数据的正确传输。需要注意的是,上述示例是一个简化的实现,实际的PDUR模块可能包含更复杂的功能和逻辑。

EcmFsharp的博客 1157

【零基础入门TypeScript】环境

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

共同学习、强我国家 552

银河麒麟桌面系统 必会操作 | 加装双系统(麒麟桌面系统+Windows系统)的详细方法(含常见故障和解决方法)

装好麒麟桌面操作系统的电脑上、再加装Windows 操作系统的详细方法;和在已经装好Windows系统的电脑上、再加装麒麟桌面操作系统的详细方法;含加装双系统过程中常见问题的解决方法。

qq_33216613的博客 2412

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

lwip-2.0.3

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

TypeScript:更好的JavaScript

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

H小志 4476

Camera2Demo

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

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

余额充值