基本类型

像基本的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. python3----strip lstrip rstrip

    Python中的strip用于去除字符串的首位字符,同理,lstrip用于去除左边的字符,rstrip用于去除右边的字符.这三个函数都可传入一个参数,指定要去除的首尾字符.注意的是,传入的是一个字符数 ...

  2. faceswap

    https://github.com/deepfakes/faceswap https://anonfile.com/p7w3m0d5be

  3. Android无线测试之—UiAutomator UiObject API介绍二

    点击与长按 一.组件区域位置关系 Rect 对象代表一个矩形区域 [Left,Top] [Right,Bottom] 二.点击与长按API 返回值 API 描述 boolean click() 点击对 ...

  4. The Best Hacking Tools

    The Best Hacking Tools Hacking Tools : List of security tools specifically aimed toward security pro ...

  5. SpringBoot自带热加载开发工具

    SpringBoot自带热加载开发工具 maven配置: <!-- SpringBoot自带热加载开发工具 --> <dependency> <groupId>or ...

  6. Kuratowski's and Wagner's theorems

    w https://en.wikipedia.org/wiki/Planar_graph The Polish mathematician Kazimierz Kuratowski provided ...

  7. JS replace()方法替换变量(可以对变量进行全文替换)

    转至:http://blog.sina.com.cn/s/blog_6552200b0102ve60.html 事情是这样的: 我要用 JS 替换一个多行文本的关键字 正常,没有变量的时候应该是这样: ...

  8. 避免每次都用sudo使用docker

    默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,非常浪费时间影响效率.如果不跟 sudo,直接执行 docker images 命令会有如下问题: FATA[0000 ...

  9. JS+PHP瀑布流效果

    miai.php,代码如下: $link = mysql_connect("localhost","root",""); //连接数据库 $ ...

  10. Axis 调用.net WebServic接口出现:验证消息的安全性时错误发生

    解决方法:call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS); 參考:http://www.blogjav ...