《TypeScript 中文入门教程》 1、基础数据类型
转载:https://github.com/MyErpSoft/TypeScript-Handbook/blob/master/pages/zh-CHS/Basic%20Types.md
概述
为了让程序更易用,我们兼容几种最基本的数据类型:numbers(数字),strings(字符串),structures(结构),boolean(布尔值)等等。在 TypeScript 中,我们支持和 Javascript 几乎一样多的类型,并且新增了实用的枚举类型。
Boolean 布尔值
最基础的数据类型就是简单的 true(真)/false(假) ,在 Javascript 和 TypeScript (以及其他语言)中被称作是 "boolean(布尔值)"。
var isDone: boolean = false;
Number 数字
和 Javascript 一样,在 TypeScript 中所有的number都是浮点值。 TypeScript 除了支持ECMAScript 2015中的十六进制和十进制外,还支持二进制和二进制类型。
var decLiteral: number = 6;
var hexLiteral: number = 0x9837abdef;
var binaryLiteral: number = 0b0010;
var octalLiteral: number = 0o74563;
String 字符串
在使用JavaScript创建网页或应用程序时,要用到很基础的功能是处理字符串,和其他语言一样,我们使用 "string" 类型来表示那些文本数据。和 JavaScript 一样,TypeScript 也使用双引号或单引号来围绕字符串数据。
var name: string = "bob";
name = 'smith';
你也可以使用 模板字符串,他能支持多行文本和内嵌表达式。这些字符串使用单引号(`)包围,并且嵌入的表达式使用${ expr }这样的形式表示。
var name: string = `Gene`;
var age: number = 37;
var sentence: string = `Hello, my name is ${ name }. I'll be ${ age + 1 } years old next month.`
上面的表达式相当于下面的声明方式:
var sentence: string = "Hello, my name is " + name + ".\n\n" +
"I'll be " + (age + 1) + " years old next month."
Array 数组
TypeScript 和 Javascript 一样,允许你使用数组。数组类型的定义可以有两种写法。第一种写法,你在数组元素类型后面添加‘[]’来表示这是一个该类型的数组:
var list: number[] = [1, 2, 3];
第二种写法使用一种通用的数组类型表示,Array<数组元素类型>:
var list: Array<number> = [1, 2, 3];
Tuple 元组
元组类型允许表达固定数量的已知类型集合,但这些类型不必是相同的。例如,您可能想表示一个'string和number`组合的类型:
// 声明一个元组类型
var x: [string, number];
// 初始化他
x = ['hello', 10]; // 准确
// 错误的初始化
x = [10, 'hello']; // 错误
我们可以使用数字检索一个已知的元素,但需要注意类型正确。
console.log(x[0].substr(1)); // 正确
console.log(x[1].substr(1)); // 错误,'number' 类型没有 'substr' 方法
当访问的索引超过边界时,将使用联合类型处理:
x[3] = 'world'; // 正确,string允许被分配到 (string | number)
console.log(x[5].toString()); // 正确,'string' 和 'number' 都有 toString 方法
x[6] = true; // 错误,布尔值不是 (string | number) 中的一种
联合类型是更高级的议题,我们会在后续的章节中介绍。
Enum 枚举
TypeScript拓展了JavaScript原生的标准数据类型集,增加了枚举类型(enum)。枚举是一种很有用的数据类型,就像C#等语言中一样,它提供了一种给数字类型的值,设置易于辨别的名字的方法。
enum Color {Red, Green, Blue};
var c: Color = Color.Green;
在默认情况下,枚举类型会从数字0开始标记它的元素。我们可以通过人为地设置元素的数值来改变默认值。例如,上面的例子我们可以设置成从1开始计数:
enum Color {Red = 1, Green, Blue};
var c: Color = Color.Green;
我们甚至可以给所有的枚举元素设置数值:
enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;
枚举类型有一个便捷特性,我们也可以直接用数值来查找其对应的枚举元素的名称。举例来说,如果我们有一个值为2,但我们不确定这个数值对应枚举类型中的哪个元素,那我们可以直接查找这个数值对应的名称:
enum Color {Red = 1, Green, Blue};
var colorName: string = Color[2];
alert(colorName);
Any
当我们编写应用时,我们可能会需要描述一些类型不明确的变量。因为这些变量的值可能来源于一些动态的内容,如用户或第三方提供的库。在这种情况下,我们需要略过对这些变量进行的类型检查,让它们直接通过编译时的检查。为了实现这一目的,我们可以把它们标识为'any'类型:
var notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
使用'any'类型是处理我们已有的JavaScript代码的一种强大的方式,我们可以用它来逐渐增加或减少在编译过程中的类型检查。 就像其他编程语言那样,你可能期望使用Object来实现这个功能,但是注意在JavaScript中,Object类型仅仅允许分配任意值给他,但不能调用他的存在或可能的任何方法:
var notSure: any = 4;
notSure.ifItExists(); // 没问题,在运行时有可能有 ifItExists 这个方法
notSure.toFixed(); // 没问题,toFixed 是真实存在的方法 (但是编译器不会验证准确性)
var prettySure: Object = 4;
prettySure.toFixed(); // 错误,不行就是不行了,使用any吧
当我们知道一个类型的部分数据类型,却又不确定所有的数据类型时,使用'any'可以为我们提供不少方便。比如你有一个数组,但是这个数组中的元素属于不同的数据类型,那你可以这么做:
var list: any[] = [1, true, "free"]; list[1] = 100;
Void
void就像any的相反面:void就是没有,any就是所有。没有返回值的函数就可以认为是'void'类型:
function warnUser(): void {
alert("This is my warning message");
}
不建议声明一个变量是 void类型,因为这个变量就只能赋值undefined 或 null。
var unusable: void = undefined;
感谢翻译
- oyyd https://github.com/oyyd/typescript-handbook-zh
- ntesmail https://github.com/ntesmail/Typescript-Handbook
- 编写人生 https://github.com/MyErpSoft/TypeScript-Handbook
《TypeScript 中文入门教程》 1、基础数据类型的更多相关文章
- 转载:TypeScript 简介与《TypeScript 中文入门教程》
简介 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构 ...
- 转载:《TypeScript 中文入门教程》
缘由 事情是这样的,我想搜索 TypeScript 中文教程,结果在 https://www.baidu.com , https://cn.bing.com ,上都找不到官方的翻译,也没有一个像样的翻 ...
- 【转】TypeScript中文入门教程
目录 虽然我是转载的,但看在Copy这么多文章也是很幸苦的好吧,我罗列一个目录. 转载:<TypeScript 中文入门教程> 17.注解 (2015-12-03 11:36) 转载:&l ...
- 《TypeScript 中文入门教程》
转载:<TypeScript 中文入门教程> 17.注解 (2015-12-03 11:36) 转载:<TypeScript 中文入门教程> 16.Symbols (2015- ...
- 转载:《TypeScript 中文入门教程》 12、类型推导
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 这节介绍TypeScript里的类型推论.即,类型是在哪里如何被推断的. 基础 ...
- 转载:《TypeScript 中文入门教程》 11、声明合并
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 TypeScript有一些独特的概念,有的是因为我们需要描述JavaScript ...
- 转载:《TypeScript 中文入门教程》 9、泛型
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不 ...
- 转载:《TypeScript 中文入门教程》 8、函数
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 函数是JavaScript应用程序的基础. 它帮助你实现抽象层,模拟类,信息隐藏 ...
- 转载:《TypeScript 中文入门教程》 17、注解
版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 介绍 随着TypeScript和ES6里引入了类,现在在一些场景下我们会需要额外的特性 ...
随机推荐
- 辛巴学院-Unity-剑英陪你零基础学c#系列(三)计算与类型
辛巴学院:正大光明的不务正业. 中秋节快乐,每逢佳节倍思亲,尤其是那素未谋面的老婆,对吧,屌丝们. 今天我们来探索一下C#里面奇怪的计算,奇怪的类型. 奇怪的计算 当我刚刚接触计算机编程的时候,一 ...
- 招聘.NET开发人员(截止于2015-06-15)
文章更新 2015-06-15 01:00AM: 感谢各位的支持,简历和解决方案接收截止.2015-06-08 08:30AM: 已经收到一些简历和解决方案,正在筛选中.职位仍然开放,欢迎发送简历及解 ...
- 移动APP服务端设计开发注意要点
2014年,移动APP的热度丝毫没有减退,怎么为您的移动端app设计良好的服务器端接口(API)呢? 下面谈谈我个人的一些想法. 2014年,移动APP的热度丝毫没有减退,并没有像桌面软件被WEB网站 ...
- for 循环打印图形
public class For { public static void main(String[] args) { //"使用双层for循环打印图形时,外层管行,内层管列",那 ...
- Zabbix实现微信报警
一. 申请企业微信账号,申请地址 https://qy.weixin.qq.com/ 二. 登陆企业微信账 图一 图二 2.添加微信账号 图一 图二 完成以上步骤后 就完成了微信账号的添加 三.新建 ...
- Windows无法安装到这个磁盘。请确保在计算机的BIOS菜单中启用了磁盘控制器
今天一朋友问我这个问题,呃,以前我也遇到过,但忘记记录了,这次就记录一下吧,就懒得打字了,图片里面很清楚了 不说点什么的话是不是太水了O(∩_∩)O~,好吧扩充一下: Windows无法安装到这个磁盘 ...
- jQuery插件:jqGrid引入及基本属性
1. jqGrid下载 jqGrid下载地址: http://www.trirand.com/blog/ jqGrid Demo: http://www.guriddo.net/demo/guridd ...
- 【Win10应用开发】自定义磁贴通知的排版
前面老周用了两篇烂文,向大家介绍了Adaptive磁贴的模板使用.那些XML模板已经很强大了,不过,如果你觉得那些排版还不足以满足需求,不妨试试自己来定义磁贴的内容. 其实,Runtime App支持 ...
- lua中的数据类型
lobject.h: lobject.h: 其中使用GCObject表示的数据类型是需要lua 的gc记录的. lstate.h: lobject.h:
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用: