TypeScript 学习笔记(二)
块级作用域变量:
1、不能在被声明前读或写
console.log(num);
let num: number = 0; // 报错
2、仍然可以在一个拥有块级作用域的变量声明前通过函数捕获它,但不能在变量声明前去调用该函数
function test() {
return num;
}
test(); // 不能在 num 被声明前调用 test
let num: number = 0;
3、同名的块级作用域变量需在不同的块里声明
注:var 声明的变量拥有函数作用域,存在声明提前,所以不管声明几次,都会得到同一个变量
接口:
1、接口通过关键字 interface 来定义
2、TypeScript 里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约并让代码看起来更好理解
3、类型检查器不会去检查实现该接口的对象里属性的顺序,只要相应的属性存在并且类型对应相同即可
4、可选属性:不是必须的属性,声明形式为 attrName?: type
interface obj {
width?: number; // 一个可选属性
heigh: number; // 一个普通属性
readonly shape: string; // 一个只读属性
}
注:可选属性能对可能存在的属性进行预定义,也能捕获引用了不存在的属性时的错误
5、只读属性:在属性名前用 readonly 指定只读属性,只能在对象刚刚创建的时候修改其值,TypeScript 不可修改的数组具有 ReadonlyArray<T> 类型
let roArr: Readonly<number> = [1, 2, 3];
let arr_one: Array<number> = roArr; // 报错
let arr_two: Array<number> = roArr as Array<number>; // 编译通过
注:不可将 ReadonlyArray 赋值给一个普通数组,但可以通过类型断言重写
6、当为属性时应该用 readonly,为变量时应该用 const
函数类型:
1、接口能描述 JavaScript 中对象拥有的各种各样的外形,除描述带有属性的普通对象外,它也可描述函数类型
2、需给接口定义一个调用签名,就像一个只有参数列表和返回值类型的函数《== 每个参数都需要名字和类型
interface SearchFunc {
// 调用签名
(source: string, subString: string): boolean;
}
let mySearch: SearchFunc;
mySearch = function (source: string, subString: string) {
return source.search(subString) > -1;
}
let str: string = "Hello World";
alert(mySearch(str, "world")); // 弹出 false
注:函数的参数名不需与接口里定义的名字相匹配,参数会逐个被检查,
要求对应位置上的参数类型是兼容的,不指定类型的话,TypeScript 会推断出参数类型
可索引类型:
1、与函数类型相似,但其具有一个索引签名,它描述了对象索引的类型,还有相应索引返回的类型
2、TypeScript 支持字符串和数字索引两种索引签名,可同时使用两种类型的索引,但数字索引的返回值必须是字符串索引返回值类型的子类型
interface StringArray {
// 索引签名
[index: number]: string;
}
let myArray: StringArray;
myArray = ["Lemon", "Yam"];
alert(myArray[0]);
注:同时使用两种索引签名时,数字索引会被转换成字符串索引
类类型:
1、用它明确地强制一个类去符合某种契约
2、类具有两个类型:静态部分的类型和实例部分的类型
3、当一个类实现接口时,只对其实例部分进行类型检查
4、当接口继承了一个类类型时,它会继承类的成员但不包括其实现,接口同样会继承该类的 private 和 protected 成员
注:private 和 protected 成员只能被这个类或其子类实现
TypeScript 学习笔记(二)的更多相关文章
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
随机推荐
- 看完这篇文章,我奶奶都知道什么是JVM中的内存模型与垃圾回收!
扩展阅读:JVM从入门开始深入每一个底层细节 六.内存模型 6.1.内存模型与运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同数据区域. Java内存模型的主要目 ...
- PHP strstr 字符串函数
定义和用法 strstr - 查找字符串的首次出现 版本支持 PHP4 PHP5 PHP7 支持 支持 支持 V5.3.0 新增可选的 before_needle 参数. V4.3.0 strstr( ...
- Linux系统学习 三、网络基础—虚拟机网络配置
Linux网络基础 Linux的ip地址配置 Linux网络配置文件 常用网络命令 虚拟机网络参数配置 1.配置Linux的IP地址 首先配置一个IP地址,让IP生效. ifconfig查看当前网络配 ...
- CodeForces - 1230D(思维+位运算)
题意 https://vjudge.net/problem/CodeForces-1230D 要组建一个小组,要求小组中每个人都不比所有人强,当一个人懂得一个算法但是另一个不懂那么前者认为他比后者强. ...
- Linux下安装redis报错信息
redis在Linux安装报错 标签: redislinuxcentos 2017-02-24 13:46 384人阅读 评论(0) 收藏 举报 分类: Linux安装工具(2) 版权声明:本文为 ...
- [CF1082D]Maximum Diameter Graph
题目描述 Description Graph constructive problems are back! This time the graph you are asked to build sh ...
- 4. 语义"陷阱"
1. 假定对于下标越界的数组元素取其地址也是非法的,那么对于本书3.6(该标题下为4.6)节中的bufwrite程序应该如何书写? void bufwrite(char *p, int n){ whi ...
- vscode源码分析【一】从源码运行vscode
安装git,nodejs和yarn 安装Python27,3.x版本的不行,确保它在你的环境变量里: 安装gulp npm install --global gulp-cli 安装windows bu ...
- Linux 学习记录五(软件的安装升级).
一.gcc gcc是Linux上面最标准的C语言的编译程序,用来源代码的编译链接. gcc -c hello.c 编译产生目标文件hello.o gcc -O hello.c 编译产生目标文件,并进行 ...
- Python开发GUI实战:图片转换素描画工具!
奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...