块级作用域变量:

  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 学习笔记(二)的更多相关文章

  1. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  3. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  5. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  8. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  9. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  10. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

随机推荐

  1. kafka cmd首个单机例子配置

    下载地址:http://kafka.apache.org/downloads       http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12- ...

  2. iOS关于制作动画运动轨迹(UIBezierPath介绍)

    参考链接: https://www.jianshu.com/p/6c9aa9c5dd68

  3. 团队项目之Scrum1

    小组:BLACK PANDA 时间:2019.11.16 部分 得分项 分数 完成内容 第 1 篇 Scrum 冲刺博客 各个成员在 Alpha 阶段认领的任务 3 明日各个成员的任务安排 3 用户登 ...

  4. Less(2)

    1.先判断注入类型 (1)首先看到要求,要求传一个ID参数,并且要求是数字型的:?id=1 (2)输入?id=1' and 1=1 出现错误 (3)输入 ?id=1 and 1=1 页面显示正常 (4 ...

  5. 201871010113-刘兴瑞《面向对象程序设计(java)》第七周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>htt ...

  6. 2019年最新50道java基础部分面试题(四)

    前35题请移步上几篇文章 36.数组有没有length()这个方法? String有没有length()这个方法?  数组没有length()这个方法,有length的属性.String有有lengt ...

  7. 【PAT甲级】Public Bike Management 题解

    题目描述 There is a public bike service in Hangzhou City which provides great convenience to the tourist ...

  8. SQLServer某个库log日志过大,无法收缩日志文件 ,因为该文件结尾的逻辑日志文件正在使用

    问题描述: 今天看到user库日志备份方面很久,然后查看到user库这个log日志很大 图片是我已经解决了,然后现在可以收缩的大小 解决方法: 1.先备份user库日志,因为很大,所以要等很久,这个只 ...

  9. IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素

    从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁.使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据 ...

  10. IT兄弟连 Java语法教程 算符运算符

    Java提供了丰富的运算符环境.可以将大部分Java运算符划分为4组:算术运算符.位运算符.关系运算符以及逻辑运算符.Java还定义了一些用于处理某些特定情况的附加运算符.本章将介绍除类型比较运算符i ...