TypeScript教程(三)变量声明

一、变量声明

变量是一种使用方便的占位符,用于引用计算机内存地址,可以将变量看做存储数据的容器

命名规则:

1.变量名称可以包含数字和字母

2.除了下划线_和美元$符号外,不能包含其他特殊字符,包括空格

3.变量名不能以数字开头

以下四种方式声明变量:

1.声明变量的类型及初始值:

var [变量名] : [类型] = 值;var uname:string = "SSS"

2.声明变量的类型,但没有初始值,变量值会设置为undefined:

var [变量名] = [类型];var uname = string

3.声明变量名和初始值,但不设置类型,该变量可以为任意类型

var [变量名] = 值;var uname = "SSS"

4.声明变量没有设置类型和初始值,类型可以是任意类型,默认初始值为undefined:

var [变量名]var uname;

示例:

ts:

var uname:string = "Runoob";
var score1:number = 50;
var score2:number = 42.50
var sum = score1 + score2
console.log("名字: "+uname)
console.log("第一个科目成绩: "+score1)
console.log("第二个科目成绩: "+score2)
console.log("总成绩: "+sum)

注:变量不要使用name,否则会与DOM中的全局window对象下的name属性出现重名

js:

var uname = "Runoob";
var score1 = 50;
var score2 = 42.50;
var sum = score1 + score2;
console.log("名字: " + uname);
console.log("第一个科目成绩: " + score1);
console.log("第二个科目成绩: " + score2);
console.log("总成绩: " + sum);

结果:

名字: Runoob
第一个科目成绩: 50
第二个科目成绩: 42.5
总成绩: 92.5

二、类型断言(Type Assertion)

类型断言可以用来手动指定一个值的类型,即允许变量从一种类型改为另一种类型

语法格式:

<类型> 值或值 as 类型

示例:

var str = '1' 
var str2:number = <number> <any> str   //str、str2 是 string 类型
console.log(str2)

TypeScript是如何确定单个断言是否足够:

当S类型是T类型的子集,或者T类型是S类型的子集时,S能被成功断言为T,这是为了在进行类型断言时提供额外的安全性,完全毫无根据的断言是危险的,除非用any

此之所以不能被称为类型转换,是因为转换通常意味着某种运行时的支持,但是,类型断言是一个编译时语法,同时,也是一种为编译器提供关于如何分析代码的方法

以上代码编译后的结果:

var str = '1';
var str2 = str;  //str、str2 是 string 类型
console.log(str2);

三、类型推断

当类型没有给出时,TypeScript编译器利用类型推断来推断类型

如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态any类型

var num = 2;    // 类型推断为 number
console.log("num 变量的值为 "+num); 
num = "12";    // 编译错误
console.log(num);

 第一行代码声明了变量num并=设置初始值为2,注意变量声明没有指定类型,因此,程序使用类型推断来确定变量的数据类型,第一次赋值为2,num设置为number类型

第三行,当再次为变量设置字符串类型的值时,编译会错误,因为变量已经设置了number类型

error TS2322: Type '"12"' is not assignable to type 'number'.

四、变量作用域

变量作用域指定了变量定义的位置

程序中变量的可用性由变量作用域决定

TypeScript有以下几种作用域:

1.全局作用域:全局变量定义在程序结构的外部,它可以在代码的任何位置使用

2.类作用域:这个变量也可以称为字段,类变量声明在一个类里头,但在类的方法外面,该变量可以通过类的对象来访问,类变量可以是静态的,静态的变量可以通过类名直接访问

3.局部作用域:局部变量,局部变量只能在声明他的一个代码块(方法)中使用

示例:

ts:

var global_num = 12          // 全局变量
class Numbers { num_val = 13;             // 实例变量static sval = 10;         // 静态变量storeNum():void { var local_num = 14;    // 局部变量} 
} 
console.log("全局变量为: "+global_num)  
console.log(Numbers.sval)   // 静态变量
var obj = new Numbers(); 
console.log("实例变量: "+obj.num_val)

js:

var global_num = 12; // 全局变量
var Numbers = /** @class */ (function () {function Numbers() {this.num_val = 13; // 实例变量}Numbers.prototype.storeNum = function () {var local_num = 14; // 局部变量};Numbers.sval = 10; // 静态变量return Numbers;
}());
console.log("全局变量为: " + global_num);
console.log(Numbers.sval); // 静态变量
var obj = new Numbers();
console.log("实例变量: " + obj.num_val);

结果:

全局变量为: 12
10
实例变量: 13

如果在方法外调用局部变量会报错:

error TS2322: Could not find symbol 'local_num'.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装

使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装 受限于每篇文章最多只能贴9张图的限制&#xff0c;这个教程被拆分成了多篇文章连载发布&#xff0c;完整目录结构如下图x所示。后续会发布完整教程的pdf文件&#xff0c;敬请期待。 图x 完整教程文档…

机器学习 | Python实现KNN(K近邻)模型实践

机器学习 | Python实现KNN(K近邻)模型实践 目录 机器学习 | Python实现KNN(K近邻)模型实践基本介绍模型原理源码设计学习小结参考资料基本介绍 一句话就可以概括出KNN(K最近邻算法)的算法原理:综合k个“邻居”的标签值作为新样本的预测值。更具体来讲KNN分类过程,给定一个训…

网络安全(自学)

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…

无服务器架构发布啦!

导读Serverless 1.15.2 已发布。The Serverless Framework (无服务器架构&#xff09;允许你自动扩展、按执行付费、将事件驱动的功能部署到任何云。 目前支持 AWS Lambda、Apache OpenWhisk、Microsoft Azure&#xff0c;并且正在扩展以支持其他云提供商。 Serverless 降低了…

nodejs+vue+elementui电影订票网站系统_wqc3k

电影订票系统在国内有很多值得借鉴的例子&#xff0c;功能也都趋于完善&#xff0c;因此此次电影订票系统将轻量化开发&#xff0c;要完成以下功能&#xff1a; &#xff08;1&#xff09;要支持完整的用户注册&#xff0c;登录功能&#xff0c;账号的管理通过管理员来实现。 &…

PHP中的16个危险函数

php中内置了许许多多的函数&#xff0c;在它们的帮助下可以使我们更加快速的进行开发和维护&#xff0c;但是这个函数中依然有许多的函数伴有高风险的&#xff0c;比如说一下的16个函数不到万不得已不尽量不要使用&#xff0c;因为许多“高手”可以通过这些函数抓取你的漏洞。 …

【Spring】核心容器——集合注入

1、集合种类 数组 List Set Map Properties 2、配置 <bean id"bookDao" class"dao.impl.BookDaoImpl"><property name"array"><array><value>2</value><value>4</value><value>6</value&g…

Docker升级后,出现Error response from daemon: Unknown runtime specified docker-runc

现象&#xff1a;docker升级版本后&#xff0c;重启docker服务出现&#xff1a; [rootDocker scripts]# docker start registry Error response from daemon: Unknown runtime specified docker-runc Error: failed to start containers: registry解决办法&#xff1a; 改完之…

大数据Flink(六十三):SqlClient工具的使用

文章目录 SqlClient工具的使用 一、​​​​​​​入门

【独立版】新零售社区团购电商系统生鲜水果商城兴盛优选十荟团源码

【独立版】新零售社区团购电商系统生鲜水果商城兴盛优选十荟团源码

私有服务Nexus安装

下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1xpOyRg7SfJsui5cL8PVRDg 提取码&#xff1a;i574 解压&#xff1a; tar -zxvf nexus-3.12.1-01-unix.tar.gz生成2个文件夹 nexus-3.12.1-01 和 sonatype-work用root用户给普通用户授权这2个文件夹的权限 例…

k8s认证详解 k8s证书详解 2023推荐

推荐阅读 https://www.yii666.com/blog/478731.html?actiononAll 在 Kube-apiserver 中提供了很多认证方式&#xff0c;其中最常用的就是 TLS 认证&#xff0c;当然也有 BootstrapToken&#xff0c;BasicAuth 认证等&#xff0c;只要有一个认证通过&#xff0c;那么 Kube-api…

NeMo 声纹识别VPR-实战

声纹识别(VPR) ,生物识别技术的一种,也称为说话人识别 ,是从说话人发出的语音信号中提取声纹信息,从应用上看,可分为: 说话人辨认(Speaker Identification):用以判断某段语音是若干人中的哪一个所说的,是“多选一”问题;说话人确认(Speaker Verification):用以确认某…

Leetcode-每日一题【剑指 Offer 31. 栈的压入、弹出序列】

题目 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列&#xff0c;序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列&#xf…

在SAP上使用 LiquidUI Android 扫描条形码/QR 码

LiquidUI Android 可使用安卓移动设备的内置摄像头扫描条形码和二维码&#xff0c;为输入框填充数值。因此&#xff0c;无需附加任何第三方设备进行扫描。 LiquidUI Android 还提供了扫描功能&#xff0c;如 Accessible-Enter&#xff08;俗称自动输入&#xff09;和 Accessib…

kotlin + LiveData 测试

viewModel测试&#xff1a;https://developer.android.com/codelabs/basic-android-kotlin-compose-test-viewmodel#3 androidTestImplementation "org.jetbrains.kotlin:kotlin-test:1.9.0"androidTestImplementation org.jetbrains.kotlinx:kotlinx-coroutines-tes…

基于粒子群改进深度信念网络的回归分析,基于PSO-DBN的回归分析

目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) 粒子群算法的原理 DBN的粒子群改进深度信念网络的回归分析 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类算…

介绍一些操作系统— CentOS 系统

介绍一些操作系统— CentOS 系统 CentOS 系统 CentOS 是 Linux 发行版之一&#xff0c;是免费的、开源的、可以重新分发的开源操作系统。 CentOS Linux发行版是一个稳定的&#xff0c;可预测的&#xff0c;可管理的和可复现的平台&#xff0c;源于 Red Hat Enterprise Linux…

SAP MM学习笔记22- 购买发注的项目种类(明细Category)

SAP中控制购买流程的是购买发注页面中购买发注明细行的项目种类&#xff08;明细Category&#xff09;栏目。 ・项目种类&#xff08;明细Category&#xff09;有&#xff1a; 1&#xff0c; 标准 2&#xff0c;K 受托品 3&#xff0c;L 外注 4&#xff0c;S 仕入先直送…

Keepalived+http高可用实战

环境准备&#xff1a; 两台安装了keepalived的服务器 ip&#xff1a;192.168.134.170;192.168.134.172 1、安装http服务 yum install httpd -y2、写一个测试页面 [rootlocalhost ~]# echo "hostname -I,web1 test page. " > /var/www/html/inde [rootlocalho…