TypeScript - 基本类型系统

对于程序来说我们需要基本的数据单元,如:numbers, strings, structures, boolean 等数据结构。在TypeScript中我们支持很多你所期望在JavaScript中所拥有的数据类型系统。

Boolean

在JavaScript和TypeScript中也具有最基本的逻辑断言值true/false,采用’boolean’类型。

var isDone: boolean = false;

Number

如JavaScript,TypeScript所有的数值类型采用浮点型计数,其类型为‘number’。

var height: number = 6;

String

在webpages的JavaScript或者服务端的应用程序最基本的功能就是处理文本数据。在其他语言中大多使用’string’去代表文本数据类型。TypeScript和JavaScript一样也是用双引号(“)或者单引号包裹文本数据。

var name: string = "bob";
    name = ‘smith‘;

Array

在TypeScript中如JavaScript一样允许我们操结合操作。数组类型可以使用下边两种方式之一。

第一种方式,你可以在数据类型之后带上’[]‘:

var list:number[] = [1, 2, 3];

第二种方式,也可以采用泛型的数组类型:

var list:Array<number> = [1, 2, 3];

Enum

TypeScript为JavaScript新增了枚举这种标准的集合数据类型。和在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

有时我们需要描述一些我们不知道的什么写进应用的动态数据类型,这可能来自第三方用户或者lib。在这里我们希望该数据不要加入TypeScript的类型检查,是的此值通过编译时检查。为此我们可以采用‘any’类型标注:

var notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

‘any’类型是一种强大的兼容存在的JavaScript库的类型系统。他允许跳过TypeScript的编译时类型的检查。

‘any’类型对于我们只知道部分数据类型,但是不是所有的数据类型的类型系统。如一个混合了多种类型的集合数组。

var list:any[] = [1, true, "free"];

list[1] = 100;

Void

和‘any’相对的数据类型则是’Void‘,它代表没有任何数据类型。我们常用的一个方法没有任何返回值:

function warnUser(): void {
    alert("This is my warning message");
}

  

时间: 2024-11-01 00:51:08

TypeScript - 基本类型系统的相关文章

转职成为TypeScript程序员的参考手册(四)

泛型 对c#程序员来说,TypeScript的泛型很熟悉,基本上是一致的设计. 类型约束 C#使用where关键字标记类型约束,TypeScript在尖括号内使用extends关键字,效果相同. 下面的例子中IExample约束了泛型必须是IMyInterface和他的派生类. 如果像下图这样用的话,就能约束为同时继承ClassOne和ClassTwo的类型.很费解吧,请特别注意. 这是因为本质上TypeScript的类型系统并不那么严格,下面的章节会详细解释TypeScript的类型系统 你也

TypeScript中文手册

TypeScript Handbook(中文版) TypeScript 2.1 正式发布! TypeScript是Microsoft公司注册商标. TypeScript具有类型系统,且是JavaScript的超集. 它可以编译成普通的JavaScript代码. TypeScript支持任意浏览器,任意环境,任意系统并且是开源的. TypeScript目前还在积极的开发完善之中,不断地会有新的特性加入进来. 因此本手册也会紧随官方的每个commit,不断地更新新的章节以及修改措词不妥之处. 如果你

转职成为TypeScript程序员的参考手册

写在前面 作者并没有任何可以作为背书的履历来证明自己写作这份手册的分量. 其内容大都来自于TypeScript官方资料或者搜索引擎获得,期间掺杂少量作者的私见,并会标明. 大部分内容来自于http://www.infoq.com/minibooks/typescript-c-sharp-programmers 你甚至可以认为这就是对这本英文小册子的翻译,实际上80%如此. 写给那些已经有编程基础,尤其是掌握c语言.c#.java这一类型的静态类型语言的同好. 鸣谢 先谢国家,虽然并不知道要谢些什

Typescript #2 类型概览

原始类型 Javascript原始类型也同样适用于 TypeScript的类型系统.因此,string, number,boolean也可以被用作类型注解: let num: number; let str: string; let bool: boolean; num = 123; num = 123.45; num = '123'; //Type '"123"' is not assignable to type 'number' str = '123'; str = 123; /

TypeScript 类型推导及类型兼容性

类型推导就是在没有明确指出类型的地方,TypeScript编译器会自己去推测出当前变量的类型. 例如下面的例子: let a = 1; 我们并没有明确指明a的类型,所以编译器通过结果反向推断变量a的类型为number,这种推断发生在初始化变量和成员,设置默认参数值和函数有返回值时. 大多数情况下,类型推导是直截了当的,但也有很复杂的情况,例如需要去匹配参数来推测类型. 最佳通用类型 当需要从几个表达式中推断类型时候,会使用这些表达式的类型来推断出一个最合适的通用类型.例如, let x = [0

TypeScript接口

介绍 TypeScript的核心原则之一是对值所具有的结构进行类型检查. 它有时被称做“鸭式辨型法”或“结构性子类型化”. 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约. 接口初探 下面通过一个简单示例来观察接口是如何工作的: function printLabel(labelledObj: { label: string }) { console.log(labelledObj.label); } let myObj = { size: 10, lab

Delphi/C#之父Anders Hejlsberg

Delphi.C#之父Anders Hejlsberg 近日首次访华,并在10月24日和27日参加了两场见面会,分享了他目前领导开发的TypeScript项目,并与国内前端开发者近距离交流.本文就为读者描述一下近距离接触大师的印象,以及Anders对TypeScript的设计理念和想法. Anders Hejlsberg(安德斯·海尔斯伯格)于1960年出生于丹麦,在Borland公司开发出Turbo Pascal和Delphi之后加入微软,主持微软下一代开发工具的研发. 他为微软开发和设计出V

NET Core中使用Angular2的Token base身份认证

下载本文提到的完整代码示例请访问:How to authorization Angular 2 app with asp.net core web api 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证 Angular2是对Angular1的一次彻底的,破坏性的更新. 相对于Angular1.x,借用某果的广告语,唯一的不同,就是处处都不同. 首先,推荐的语言已经不再是Javascript,取而代之的TypeScript,(TypeScri

angular4.0和angularJS、react.js、vue.js的简单比较

angularJS特性 模板功能强大丰富(数据绑定大大减少了代码量) 比较完善的前端MVC框架(只要学习这个框架,按照规定往里面填东西就可以完成前端几乎所有的的问题) 引入了Java的一些概念 angularJS的一些问题 性能问题[(脏检查机制)在angular中被废除了,整体性能被提升 路由问题[(使用的是第三方模块)在angular中路由器是主要的机制 作用域问题[(不能用原生的事件,想用就要调用一个方法)在angular中任何原生的事件都可以直接处理 表单验证问题[在angular中提供