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的方 ...
随机推荐
- WPF命令绑定 自定义命令
WPF的命令系统是wpf中新增加的内容,在以往的winfom中并没有.为什么要增加命令这一块内容.在winform里面的没有命令只使用事件的话也可以实现程序员希望实现的功能.这个问题在很多文章中都提到 ...
- vmware 安装配置 ,记住这一次不要再问我了。ok?
Linux 安装配置 ,记住这一次不要再问我了.ok? 第一步 选择版本 如果遇到问题无法自动获取的 老男孩教育-李泳谊<youjiu_linux@qq.com> 17:51:43明天开 ...
- Android Studio下通过Gradle配置实现资源文件的模块化
当开发一个app模块个数很多的时候,资源文件就会特别多,布局也会多起来,这时所有的layout都放在同一个目录下,就会显得臃肿,而且不好找相应的布局. 最近看到相关资料,发现在Android Stud ...
- .NET架构师必备知识
.NET架构师,我归纳一下要学的知识: 成为优秀程序员,需要学好的知识: 1. 面向对象编程.UML画图.设计模式.代码重构 2. 常用ORM工具 3. MVC,WCF,XMl, JQuery ,S ...
- E QUERY [main] SyntaxError: identifier starts immediately after numeric literal mongodb mapReduce 异常分析 集合命名规范
异常信息 repl_test:PRIMARY> db.0917order_totals_b.find()2018-09-28T15:13:03.992+0800 E QUERY [main] S ...
- <2013 07 31> 没有必然的理由
<2013 07 31> 没有必然的理由 没有必然的理由 人类从野蛮走向文明 也可能,从野蛮走向更野蛮 没有必然的理由 人群从疯狂走向理智 也可能,从疯狂走向更疯狂 没有必然的理由 你我从 ...
- NSCache类的简单介绍
最近看SDWebImage,里面的内存缓存用到了NSCache这个类,由于以前没有使用过,特此记录学习一下. NSCache NSCache是苹果官方提供的缓存类,用法和NSMutableDicton ...
- iOS 关于自定义UICollectionViewLayout实现复杂布局
UICollectionView的简单介绍 UICollectionView的结构 Cells Supplementary Views 追加视图 (类似Header或者Footer) Decorati ...
- 基于java mail实现简单的QQ邮箱发送邮件
刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...
- 使用QFuture类监控异步计算的结果
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65630701在Qt中,为我们提供了好几种使用线程的 ...