typescript handbook 学习笔记1
概述
这是我学习typescript的笔记。写这个笔记的原因主要有2个,一个是熟悉相关的写法;另一个是理清其中一些晦涩的东西。供以后开发时参考,相信对其他人也有用。
学习typescript建议直接看中文文档或英文文档。我是看的英文文档。
介绍
我不过多的介绍typescript,因为网上资料一大堆。我只记录下我的个人见解。
javascript是一个很灵活的语言,在维护时就会遇到很多坑,所以我们选择用typecript。
typecript的如下几点非常吸引我,并且非常激动人心。
- 代码编写者的最低权限原则,又叫Principle of least privilege。我们编写代码的时候,应该赋给代码编写者最低的权限,而不是过多的权限,否则代码编写者就会使用这过多的权限给别人挖一些坑。
- 参数注释和检查。以前我们在写一个函数的时候需要在函数上面写一些关于这个函数的注释:参数是什么,返回什么等。而typescript直接把他们集成到代码中去了,并且能够为这些提供检查。
- 函数式编程思想。typescript用到了少许函数式编程思想。比如下面这个例子。
function foo() {
// okay to capture 'a'
return a;
}
// illegal call 'foo' before 'a' is declared
// runtimes should throw an error here
foo();
let a;
基本类型
任何语言都有基本类型,typescript也是一种语言,也不例外。在声明这些基本类型的时候需要指定它们的类型。
Boolean布尔值
let myBoolean: boolean = false;
Number数字
let myNumber: number = 22;
String字符串
let myString: string = 'haha';
Array数组
Array有2种写法,我个人推荐下面这种。
//推荐
let myList: number[] = [1, 2, 3];
//不推荐,仅作熟悉
let myList: Array<number> = [1, 2, 3];
Tuple元组
let tuple01: [string, number];
//不止2个
let tuple02: [string, boolean, number];
//继续赋值会使用union type: string | number
tuple01 = ['hello', 10];
tuple01[5] = 'haha';
Enum枚举
//注意没有分号,并且后面要加: Color声明
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
//用数字引用元组内容,注意是string?
enum Color {Red = 1, Green = 3, Blue = 7}
let colrName: string = Color[3];
Any
//Any无比强大
let notSure: any = 4;
notSure = 'haha';
notSure = false;
notSure.toFixed();
//数组
let list: any[] = [1, true, 'haha'];
Void
//Void一般用于函数的返回值,表示没有返回值
function warnUser: void {
alert('This is my warning message!');
}
Null, Underfied和Never
null和underfied是其它任何类型的子类型,所以可以把它们赋值给其它类型。
never一般在抛出异常和从不返回的函数中用到。(注意:never是从不返回,never returns;而void是没有返回值)
//抛出异常
function error(message: string): never {
throw new Error(message);
}
//无限循环,从不返回
function infiniteLoop(): never {
while (true) {
}
}
Type assertions类型断言
类型断言有2中形式,我们推荐下面这种。类型断言表示这个类型我能确定是这个,不用类型检查了,一般用于跳过typescript的类型检查。
//推荐
let someThing: any = 'this is haha';
let strLength: number = (someThing as string).length;
//仅作熟悉,不推荐
let someThing: any = 'this is haha';
let strLength: number = (<string>someThing).length;
typescript handbook 学习笔记1的更多相关文章
- typescript handbook 学习笔记4
概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...
- typescript handbook 学习笔记3
概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...
- typescript handbook 学习笔记2
概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...
- typescript类(学习笔记非干货)
我们声明一个 Greeter类.这个类有3个成员:一个叫做greeting的属性,一个构造函数和一个greet方法. We declare a Greeter class. This class ha ...
- typescript接口(学习笔记非干货)
typescript的核心原则之一就是对所具有的shape类型检查结构性子类型化 One of the core principles of typescript is to check struct ...
- 【TypeScript】学习笔记 把一些需要记的记录一下
安装typescript: npm install -g typescript 启动typesctipt自动编译: tsc 文件名.ts --watch 函数参数默认值: 1.有默认值参数的,声明在最 ...
- typescript泛型(学习笔记非干货)
软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型, 这在创建大型系统时为你提供了十分灵活的功能. In softwa ...
- TypeScript语言学习笔记(2)
接口 // 在参数类型中定义约束 function printLabel(labelledObj: { label: string }) { console.log(labelledObj.label ...
- TypeScript语言学习笔记(1)
基本类型 // 布尔型(Boolean) let isDone: boolean = false; // 数值型(Number) let decimal: number = 6; let hex: n ...
随机推荐
- TXLSReadWriteII5 单元格读写
unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...
- git克隆远程仓库的时候断电了,使用git-fetch断点续传
今天下载tensorflow serving 模型,但是因为主机电源线太长了,不知是我自己搞的还是同事,断电了都, 网速捉急,下载了挺长时间的,一看,git clone 到中途竟然断电,不过查看,还好 ...
- 微信小程序--预览previewImage(长按保存图片)
最近开发小程序,想实现二维码图片长按保存,发现无法保存,只能让图片先预览,再保存.注意:只有太阳码才有长按保存和识别功能,普通二维码只有长按保存功能. <image class='banner' ...
- 深入JVM之类的加载器
类加载器有两种: —java虚拟机的自带加载器 根类加载器(Bootstrap) 扩展类加载器(Extension) 系统类加载器(AppClassLoder) —自定义的类加载器 java.lang ...
- 关于php条形码生成(barcode),修改样式
今天听错了需求,以为要重新设计条形码,第一次制作这个,经过搜索使用的barcode这个第三方的,具体使用步骤网上很多就不在这里详细介绍了.主要是今天遇到的样式修改问题: barcode经过查看是无法自 ...
- 153. Find Minimum in Rotated Sorted Array找其中的最小值
[抄题]: [暴力解法]: 时间分析: 空间分析: [优化后]: 时间分析: 空间分析: [奇葩输出条件]: [奇葩corner case]: [思维问题]: 总算自己写出一道题来了. [英文数据结构 ...
- CentOS7 下使用root免密码输入自动登入gnome桌面
如果系统默认启动图形界面: vi /etc/gdm/custom.conf #找到[daemon],修改为下面的 [daemon] AutomaticLoginEnable=true Automati ...
- 手机服务器微架构设计与实现 之 http server
手机服务器微架构设计与实现 之 http server ·应用 ·传输协议和应用层协议概念 TCP UDP TCP和UDP选择 三次握手(客户端与服务器端建立连接)/四次挥手(断开连接)过程图 · ...
- loadtxt()函数的糟心历程
原计划:导入一个csv文件,然后算出平均值 import numpy as np c=np.loadtxt('d:\python36\data.csv', delimiter=',', usecols ...
- Kali proxychains
1.什么是proxychains 在linux系统中有很多软件是不支持代理的,但是proxychains 却可以让不支持代理的软件 也能走代理通道,支持HTTP,HTTPS,SOCKS4,SOCKS5 ...