TypeScript学习笔记(二) - 基本类型

本篇将简单介绍TypeScript的几种基本类型。

TypeScript基本类型有如下几种:

    • Boolean
    • Number
    • String
    • Array
    • Tuple
    • Enum
    • Any

另外还有void类型,主要用于标识方法返回值的类型。

下面通过一些简单的例子来展示这些类型的基本用法

 1 // Boolean
 2 let isDone: boolean = false;
 3 isDone = true;
 4
 5 // Number
 6 let num: number = 1;        // 整数
 7 num = 2.5;                  // 小数
 8 num = 0xf00d;               // 十六进制
 9 num = 0b0101;               // 二进制
10 num = 0o123;                // 八进制
11
12 // String
13 let str: string = ‘Hello world‘;
14 let content: string = `${str} too`;                 // 使用表达式拼接字符串时,需要使用(`)符号将拼接内容包括起来
15
16 // Array
17 let numbers1: number[] = [1, 2];
18 let numbers2: Array<number> = [1, 2, 3];            // 另外一种定义数组类型的方式,与nunber[]等价
19
20 // Tuple(元组类型)
21 let t: [string, number] = [‘No.‘, 1];
22 t = [‘This is No.‘, 2];                             // 值类型与定义的一致,编译通过。
23 //t = [2, ‘This is No.‘];                           // 值类型与定义的不一致,编译失败,提示错误。
24
25 // Enum(枚举)
26 enum Operator1 { Add, Update, Delete, Select };
27 let opt1: Operator1 = Operator1.Add;                // opt1的值为0。取枚举项的默认值。
28
29 enum Operator2 { Add = 1, Update, Delete, Select };
30 let opt2: Operator2 = Operator2.Update;             // opt2的值为2。当某一项设置了值后,后续项的值都顺次加1。
31 let opt2Name: string = Operator2[2];                // opt2Name的值为Update。通过值索引可以得到枚举项的名称。

以上类型的声明都是强类型声明,也就是说对已经指定了明确类型的变量赋值另外类型的值时,某些IDE(VS 2015、VS Code和WebStorm)会在对应行显示错误标识。同时在编译时会提示编译错误,类似效果如下:

另外,Any类型是一个特殊的类型。它表示当前对象的类型由具体的值的类型来确定,它可以适用于任何强类型。

1 // Any
2 let obj: any = ‘This is a string.‘;
3 obj = 1;
4 obj = [1, 2];
5 obj = false;
6 obj = {};
7 obj = function () { return false; };

Any类型的值可以通过强制类型转换将值转换成目标类型

1 // 强制类型转换
2 let obj1: any = ‘This is a string.‘;
3 let len: number = (<string>obj1).length;
4 len = (obj1 as string).length;

将以上代码进行编译后将转换成ES5标准的JavaScript源码,如下

 1 // Boolean
 2 var isDone = false;
 3 isDone = true;
 4 // Number
 5 var num = 1;        // 整数
 6 num = 2.5;          // 小数
 7 num = 0xf00d;       // 十六进制
 8 num = 5;            // 二进制
 9 num = 83;           // 八进制
10 // String
11 var str = ‘Hello world‘;
12 var content = str + " too";                             // 使用表达式拼接字符串时,需要使用(`)符号将拼接内容包括起来
13 // Array
14 var numbers1 = [1, 2];
15 var numbers2 = [1, 2, 3];                               // 另外一种定义数组类型的方式,与nunber[]等价
16 // Tuple(元组类型)
17 var t = [‘No.‘, 1];
18 t = [‘This is No.‘, 2];                                 // 值类型与定义的一致,编译通过。
19 //t = [2, ‘This is No.‘];                               // 值类型与定义的不一致,编译失败,提示错误。
20 // Enum(枚举)
21 var Operator1;
22 (function (Operator1) {
23     Operator1[Operator1["Add"] = 0] = "Add";
24     Operator1[Operator1["Update"] = 1] = "Update";
25     Operator1[Operator1["Delete"] = 2] = "Delete";
26     Operator1[Operator1["Select"] = 3] = "Select";
27 })(Operator1 || (Operator1 = {}));
28 ;
29 var opt1 = Operator1.Add;                               // opt1的值为0。取枚举项的默认值。
30 var Operator2;
31 (function (Operator2) {
32     Operator2[Operator2["Add"] = 1] = "Add";
33     Operator2[Operator2["Update"] = 2] = "Update";
34     Operator2[Operator2["Delete"] = 3] = "Delete";
35     Operator2[Operator2["Select"] = 4] = "Select";
36 })(Operator2 || (Operator2 = {}));
37 ;
38 var opt2 = Operator2.Update;                            // opt2的值为2。当某一项设置了值后,后续项的值都顺次加1。
39 var opt2Name = Operator2[2];                            // opt2Name的值为Update。通过值索引可以得到枚举项的名称。
40 // Any
41 var obj = ‘This is a string.‘;
42 obj = 1;
43 obj = [1, 2];
44 obj = false;
45 obj = {};
46 obj = function () { return false; };
47 // 强制类型转换
48 var obj1 = ‘This is a string.‘;
49 var len = obj1.length;
50 len = obj1.length;

其他相关内容

在新的ECMAScript 2015标准里,为了解决变量提升,简化块级作用域的实现方式,对变量的声明增加了两个关键词:let和const。

    • const:常量。一旦声明赋值后,将不能对此变量进行再次赋值。
    • let:块级作用域变量。变量的生命周期只在被{}括号包裹的代码范围内有效,且不能重复声明。

在新的标准下编写JavaScript代码时,要遵循“多let少var”的规范。

时间: 2024-08-08 01:26:39

TypeScript学习笔记(二) - 基本类型的相关文章

Swift学习笔记(二)参数类型

关于参数类型,在以前的编程过程中,很多时间都忽视了形参与实参的区别.通过这两天的学习,算是捡回了漏掉的知识. 在swift中,参数有形参和实参之分,形参即只能在函数内部调用的参数,默认是不能修改的,如果想要修改就需要在参数前添加var声明. 但这样的声明过后,仍旧不会改变实参的值,这样就要用到inout了,传递给inout的参数类型必须是var类型的,不能是let类型或者字面类型,(字面类型是在swift中常提的一个术语,个人认为就是赋值语句,也不能修改)而且在传递过程中,要用传值符号"&

C#学习笔记二: C#类型详解

前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. 再会有三篇博客  这个系列的就会结束了. 也算是自己对园子中@Learning Hard出版的<<C#学习笔记>>的一个总结了. 博客内容基本上都是白天抽空在公司写好的了, 但是由于公司内部网络不能登录博客园所以只能够夜晚拿回来修改,  写的不好或者不对的地方也请各位大神指出. 在下感

TypeScript学习笔记之基础类型

从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下npm包: npm i typescript -g // ts全局包 npm i ts-node -g // 使用ts-node可以直接运行ts文件 基础类型 布尔类型 let isDone: boolean = false let isExist: boolean = true console.lo

TypeScript学习笔记之接口类型

TypeScript的接口,个人理解就是一种约束,包括各种类型的契约或者代码定义上的契约.当然,和java中的用法基本一致,接口可以被继承也可以被实现. 定义一个简单的interface interface LabelledValue { label: string; } function printLabel(labelledValue: LabelledValue) { console.log(labelledValue.label); } let myLabel: LabelledValu

Go语言学习笔记(二) [变量、类型、关键字]

日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号. 2.Go 同其他语言不同的地方在于变量的类型在变量名的后面.例如:不是,int a,而是 a int.当定义了一个变量,它默认赋值为其类型的 null 值.这意味着,在 var a int后,a 的 值为 0.而 var s string,意味着 s 被赋值为零长度字符串,也就是 "". 3.Go语言的变量声明和赋值 在Go中使

Caliburn.Micro学习笔记(二)----Actions

Caliburn.Micro学习笔记(二)----Actions 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持 我们还是从做例子开始 demo的源码下载在文章的最后 例子1.无参数方法调用 点击button把textBox输入的文本弹出来 如果textbox里没有文本button不可点,看一下效果图 看一下前台代码 <Stac

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t

angular学习笔记(二十八)-$http(6)-使用ngResource模块构建RESTful架构

ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法 1.引入angular-resource.min.js文件 2.在模块中依赖ngResourece,在服务中注入$resource var HttpREST = angular.module('HttpREST',['ngResource']); HttpREST.factory('cardResource

angular学习笔记(二十七)-$http(5)-使用$http构建RESTful架构

在angular中有一个特别为RESTful架构而定制的服务,是在$http的基础上进行了封装. 但是为了学习,我们先看看用直接$http是如何构建RESTful架构的: 假设有一个银行卡的列表.需要的功能有: 可以通过id来获取用户123的指定id的卡     'GET'  'card/user/123/id' 可以获取用户123的所有的银行卡             'GET'  'card/user/123' 可以更新用户123的指定id的卡                'POST' '

Android学习笔记二

17. 在ContentProvider中定义的getType()方法是定义URI的内容类型. 18. SQLiteDatabase类中的insert/delete/update/query方法其实也挺好用的,我在EquipmentProvider类中做了实现 19. Android专门有个单元测试项目(Android Test Project),在这个项目中,可以新建一个继承AndroidTestCase类的具体测试类来单元测试某个功能.我新建了一个AndroidTestProject项目,在