TypeScript手册1 - 基本类型和接口
基本类型
像基本的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 - 基本类型和接口的更多相关文章
- TypeScript:基本类型和接口
返回TypeScript手册总目录 基本类型(Basic Types) 为了让程序可以使用,我们需要用到一些最简单的数据单元:数字,字符串,结构,布尔值,诸如此类.在TypeScript中,支持许多正 ...
- Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...
- [TODO]The way to Go(9): 基本类型和运算符
参考: Github: Go Github: The way to Go 基本类型和运算符 表达式是一种特定的类型的值,它可以由其它的值以及运算符组合而成. 每个类型都定义了可以和自己结合的运算符集合 ...
- Java中的基本类型和包装类型区别
首先看一下几个测试题,验证一下java中对基本类型和包装类型的理解,看看最后输出的答案对不对,答案在这篇博客中哦: // 第一题: 基本类型和包装类型 int a = 100; Integer b = ...
- Java 基础 - 基本类型和引用类型
ref: https://www.cnblogs.com/ysocean/p/8482979.html#_label2 ------------------ 这里再给大家普及一个概念,在 Java 中 ...
- 【Java心得总结一】Java基本类型和包装类型解析
说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...
- Java基础——基本类型和包装类、基本类型和字符串之间的转换
基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...
- 基本类型和引用类型调用是的区别(Object.create)
var person = { name : 'jim', address:{ province:'浙', city:'A' } } var newPerson = Object.create(pers ...
- Scala编程--基本类型和操作
如果你熟悉Java,你会很开心地发现Java基本类型和操作符在Scala里有同样的意思.然而即使你是一位资深Java开发者,这里也仍然有一些有趣的差别使得本章值得一读.因为本章提到的一些Scala的方 ...
随机推荐
- ios --图片文字组合头像那点事
/** 图片文字组合头像那点事 @param string 昵称 @param imageSize 图片尺寸 @param imageColor 图片颜色 @return 返回的 图片 */ + (U ...
- iOS QQ的AppID转换16进制的方法
801312852为QQ的AppID 打开终端 echo 'ibase=10;obase=16;801312852'|bc 红色框内的即为转换后的16进制
- 1249 Problem Q
问题 Q: 比大小 时间限制: 1 Sec 内存限制: 128 MB 提交: 159 解决: 66 [提交][状态][讨论版] 题目描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如 ...
- eclipse + pydev 创建django项目
前提条件机器装好python,并装好django插件.(http://blog.csdn.net/lilongjiu/article/details/51405340) 1. 下载eclise Ver ...
- o.a.catalina.core.AprLifecycleListener : An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
1.错误信息提示: 2019-04-16 22:02:05.811 ERROR 18112 --- [ main] o.a.catalina.core.AprLifecycleLi ...
- 2014江西理工大学C语言程序设计竞赛高级组题解
1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence 本题的核 ...
- n++ ++n
n = 100 + m++ n = 100 +m; ++m n = 100 + ++m; ++m; n = 100 +m ;
- Python学习笔记(三)windows下安装theano
2016.6.28补充: 不论是实验室的电脑还是我的笔记本,只要是windows下,theano.test()都是不通过的.虽然能使用一些theano中的函数,但是我感觉很不好. 所以还是转Ubunt ...
- DOM 属性操作
1 属性节点 2 attribute操作 3 value获取值操作 4 class的操作 5 指定CSS操作 1.属性节点 //获取文本节点的值 var divEle = document.getEl ...
- spring下配置shiro
1.web.xml中加入shiro的过滤器: <!-- Spring --> <!-- 配置Spring配置文件路径 --> <context-param> < ...