基本类型

像基本的JavaScript一样,TypeScript支持numbers, strings, structures, boolean等基本类型,而扩展的enum等类型,为编程提供了更多帮助。

Boolean

这是最简单的类型

 
var isDone: boolean = false;

Number

在JavaScript中,所有数字都是浮点类型,TypeScript中也一样。

var height: number = 6;

String

文本型数据也是一种常见类型,其常量用双引号(")或单引号(')引起来。

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

Array

数组类型可以用两种方式表达。 第一种, 在使用的类型元素之后加上[] 来表示一个Array元素的类型:

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

第二种方法使用一个通用的Array类型,Array< elemType >:

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

Enum枚举

像语言c#,enum是一种更友好的名字给的数值。

enum Color {Red, Green, Blue};
var c: Color = Color.Green;

默认情况下,枚举成员从0开始编号。 但可以通过给元素赋值来改变编号。 例如,我们可以在1而不是0开始前面的示例:

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

表示一种未知或可变的类型:

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

Any为TypeScript提供了和JavaScript进行数据交互的强大能力。

Any类型让一个数组中可以混合多种数据:

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

list[1] = 100;

Void

有时一个函数没有返回值,用void来表示:

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


接口

接口为编程带来了非常多的好处,很多语言和设计模式中,接口都是一个重要角色。

我们的第一个Interface

一个简单的例子:

function printLabel(labelledObj: {label: string}) {
console.log(labelledObj.label);
} var myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);

类型检查器检查调用“printLabel”。 printLabel的函数只有一个参数,要求传入的对象有一个属性被称为“标签”类型的String。 请注意,我们的对象实际上有更多的属性 比这个,但是编译器只检查参数规定的label属性。

我们可以写同样的例子,这一次使用一个接口来描述需求的“标签”的属性是一个String:

interface LabelledValue {
label: string;
} function printLabel(labelledObj: LabelledValue) {
console.log(labelledObj.label);
} var myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);

这种实现方式功能和上例相同,只是有了更明确的接口。

可选属性

有时接口中的属性并不是必须的,可选属性可以满足这种需求。

这是这种模式的例子:

interface SquareConfig {
color?: string;
width?: number;
} function createSquare(config: SquareConfig): {color: string; area: number} {
var newSquare = {color: "white", area: 100};
if (config.color) {
newSquare.color = config.color;
}
if (config.width) {
newSquare.area = config.width * config.width;
}
return newSquare;
} var mySquare = createSquare({color: "black"});

带"?"的属性就是可选属性。

可选属性的优点是可以对匹配的属性进行类型检查,同时又保持了高度灵活性:

interface SquareConfig {
color?: string;
width?: number;
} function createSquare(config: SquareConfig): {color: string; area: number} {
var newSquare = {color: "white", area: 100};
if (config.color) {
newSquare.color = config.collor; // 这里编译器会进行类型检查
}
if (config.width) {
newSquare.area = config.width * config.width;
}
return newSquare;
} var mySquare = createSquare({color: "black"});

函数型接口

接口能够描述各种各样的,JavaScript对象。 除了描述一个对象的属性外,Interface也能够描述函数类型。

函数型接口规定了函数的参数和返回值。

interface SearchFunc {
(source: string, subString: string): boolean;
}

下面是应用这个函数型接口的例子。

var mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
var result = source.search(subString);
if (result == -1) {
return false;
}
else {
return true;
}
}

函数型接口只检查参数类型,不检查参数名称。 例如我们可以把上面的例子写成这样:

var mySearch: SearchFunc;
mySearch = function(src: string, sub: string) {
var result = src.search(sub);
if (result == -1) {
return false;
}
else {
return true;
}
}

TypeScript手册1 - 基本类型和接口的更多相关文章

  1. TypeScript:基本类型和接口

    返回TypeScript手册总目录 基本类型(Basic Types) 为了让程序可以使用,我们需要用到一些最简单的数据单元:数字,字符串,结构,布尔值,诸如此类.在TypeScript中,支持许多正 ...

  2. Java Native Interface 二 JNI中对Java基本类型和引用类型的处理

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...

  3. [TODO]The way to Go(9): 基本类型和运算符

    参考: Github: Go Github: The way to Go 基本类型和运算符 表达式是一种特定的类型的值,它可以由其它的值以及运算符组合而成. 每个类型都定义了可以和自己结合的运算符集合 ...

  4. Java中的基本类型和包装类型区别

    首先看一下几个测试题,验证一下java中对基本类型和包装类型的理解,看看最后输出的答案对不对,答案在这篇博客中哦: // 第一题: 基本类型和包装类型 int a = 100; Integer b = ...

  5. Java 基础 - 基本类型和引用类型

    ref: https://www.cnblogs.com/ysocean/p/8482979.html#_label2 ------------------ 这里再给大家普及一个概念,在 Java 中 ...

  6. 【Java心得总结一】Java基本类型和包装类型解析

    说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...

  7. Java基础——基本类型和包装类、基本类型和字符串之间的转换

    基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...

  8. 基本类型和引用类型调用是的区别(Object.create)

    var person = { name : 'jim', address:{ province:'浙', city:'A' } } var newPerson = Object.create(pers ...

  9. Scala编程--基本类型和操作

    如果你熟悉Java,你会很开心地发现Java基本类型和操作符在Scala里有同样的意思.然而即使你是一位资深Java开发者,这里也仍然有一些有趣的差别使得本章值得一读.因为本章提到的一些Scala的方 ...

随机推荐

  1. asp.net c#采集需要登录页面的实现原理及代码

    当我们采集页面的时候,如果被采集的网站需要登录才能采集,原理搞清楚了,就好办了,我们所要做的仅仅是在采集的时候(或者说HttpWebRequest提交数据的时候),将Cookie信息放入Http请求头 ...

  2. Unity3D学习笔记——NGUI之UIPopupList

    UIPopupList:将这个组件添加到Button上,即可构建一个下拉列表. 效果图如下: 一:使用步骤 1.首先创建一个Sprite作为button. 2.创建一个label,用于显示当前选择的选 ...

  3. php读取xml的神器

    <?xml version="1.0 encoding="UTF-8"?> <humans> <zhangying> <name ...

  4. 集合 Vector ArrayList 集合一

    集合是存储对象的,与对象数组不同,集合可以自动的扩大自己的容量,像StringBuffer一样,存储的对象类型可以不一致,(object数组). 方法: add();remove();get();se ...

  5. hdu5646(数学)

    小学数学,脑补 一开始看到这题,猜了个规律想写但是我是拒绝的. 因为我无法证明. 好吧,主要还是小学数学没学好吧. 要理解这题,首先得搞懂一个重要问题.假设C=A+B,怎样选择两个正整数使得A*B最大 ...

  6. HBase1.2.4基于hadoop2.4搭建

    1.安装JDK1.7, Hadoop2.4 2.下载 hbase 安装包 下载地址:http://apache.fayea.com/hbase/1.2.4/hbase-1.2.4-bin.tar.gz ...

  7. 洛谷 P2261 [CQOI2007]余数求和

    洛谷 一看就知道是一个数学题.嘿嘿- 讲讲各种分的做法吧. 30分做法:不知道,这大概是这题的难点吧! 60分做法: 一是直接暴力,看下代码吧- #include <bits/stdc++.h& ...

  8. python函数回顾:dict()

    描述 dict() 函数用于创建一个字典. 语法 dict 语法: class dict(**kwarg) class dict(mapping, **kwarg) class dict(iterab ...

  9. 前端之 JS 实现全选、反选、取消选中

    需求 制作如下可选表格,实现“全选”.“反选”.“取消”功能 代码示例 <!DOCTYPE html> <html lang="zh-CN"> <he ...

  10. poj 1012 &amp; hdu 1443 Joseph(约瑟夫环变形)

    题目链接: POJ  1012: id=1012">http://poj.org/problem?id=1012 HDU 1443: pid=1443">http:// ...