块级作用域变量:

  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. 使用Kubernetes进行ProxySQL本机群集

    自v1.4.2起,ProxySQL支持本机群集.这意味着多个ProxySQL实例可识别群集; 他们了解彼此的状态,并能够通过根据配置版本,时间戳和校验和值同步最新的配置来自动处理配置更改. Proxy ...

  2. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之三:安装Windows活动目录域服务

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  3. SAP 资产相关日期

    1. Capitalized Date(资本化日期) 可以手工输入资本化日期,或者如果不输入,则通常默认写入First Acquisition Date (资产第一次购置时输入资产价值日). 2.As ...

  4. 使用VSCode创建一个Vue项目

    vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. 安装vue-cli之前,需要先安装了vue和webpack · node -v          //(版本低引起:bas ...

  5. Mongodb介绍(非原创)

    文章大纲 一.什么是nosql二.mongodb与mysql比较三.参考文章   一.什么是nosql 1. 简介 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据. ...

  6. 不依赖官方LibPack编译FreeCAD的一次尝试

    在Windows下编译FreeCAD,通常的方法是依赖官方提供的LibPack,但是只有vs2008, vs2012, vs2013等几个版本提供.比如现在感觉vs2017比较好用,可是没有官方Lib ...

  7. 201871010128-杨丽霞《面向对象程序设计(java)》第一周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...

  8. poj 1064 Cable master 二分 题解《挑战程序设计竞赛》

    地址 http://poj.org/problem?id=1064 题解 二分即可 其实 对于输入与精度计算不是很在行 老是被卡精度 后来学习了一个函数 floor 向负无穷取整 才能ac 代码如下 ...

  9. maven clean插件使用进阶

    maven clean插件使用进阶 参考 Maven clean 插件 Maven删除外部文件 查看命令帮助 mvn clean:help mvn clean:help -Ddetail=true - ...

  10. LG1879 「USACO2006NOV」Corn Fields 状压DP

    问题描述 LG1879 题解 设\(opt[i][j]\)代表前\(i\)行,且第\(i\)行状态为\(j\)的方案数. 枚举\(j\),再枚举\(k\),\(k\)为上一行的状态. 判断\(j,k\ ...