概述

这是我学习typescript的笔记。写这个笔记的原因主要有2个,一个是熟悉相关的写法;另一个是理清其中一些晦涩的东西。供以后开发时参考,相信对其他人也有用。

学习typescript建议直接看中文文档英文文档。我是看的英文文档

介绍

我不过多的介绍typescript,因为网上资料一大堆。我只记录下我的个人见解

javascript是一个很灵活的语言,在维护时就会遇到很多坑,所以我们选择用typecript。

typecript的如下几点非常吸引我,并且非常激动人心

  1. 代码编写者的最低权限原则,又叫Principle of least privilege。我们编写代码的时候,应该赋给代码编写者最低的权限,而不是过多的权限,否则代码编写者就会使用这过多的权限给别人挖一些坑。
  2. 参数注释和检查。以前我们在写一个函数的时候需要在函数上面写一些关于这个函数的注释:参数是什么,返回什么等。而typescript直接把他们集成到代码中去了,并且能够为这些提供检查。
  3. 函数式编程思想。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的更多相关文章

  1. typescript handbook 学习笔记4

    概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...

  2. typescript handbook 学习笔记3

    概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...

  3. typescript handbook 学习笔记2

    概述 这是我学习typescript的笔记.写这个笔记的原因主要有2个,一个是熟悉相关的写法:另一个是理清其中一些晦涩的东西.供以后开发时参考,相信对其他人也有用. 学习typescript建议直接看 ...

  4. typescript类(学习笔记非干货)

    我们声明一个 Greeter类.这个类有3个成员:一个叫做greeting的属性,一个构造函数和一个greet方法. We declare a Greeter class. This class ha ...

  5. typescript接口(学习笔记非干货)

    typescript的核心原则之一就是对所具有的shape类型检查结构性子类型化 One of the core principles of typescript is to check struct ...

  6. 【TypeScript】学习笔记 把一些需要记的记录一下

    安装typescript: npm install -g typescript 启动typesctipt自动编译: tsc 文件名.ts --watch 函数参数默认值: 1.有默认值参数的,声明在最 ...

  7. typescript泛型(学习笔记非干货)

    软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型, 这在创建大型系统时为你提供了十分灵活的功能. In softwa ...

  8. TypeScript语言学习笔记(2)

    接口 // 在参数类型中定义约束 function printLabel(labelledObj: { label: string }) { console.log(labelledObj.label ...

  9. TypeScript语言学习笔记(1)

    基本类型 // 布尔型(Boolean) let isDone: boolean = false; // 数值型(Number) let decimal: number = 6; let hex: n ...

随机推荐

  1. 尚硅谷springboot学习31-jdbc数据连接

    可以使用JdbcTemplate操作数据库,可以在启动的时候自动建表,更新数据表 配置依赖 <dependency> <groupId>org.springframework. ...

  2. 把Gitlab迁移到Docker容器里

    把Gitlab迁移到Docker容器里 Apr 9, 2015. | By: 任怀林 公司的gitlab一直是运行在ovm的虚拟机里的,版本还是6.7.5.版本有点老了,最近在研究docker,于是想 ...

  3. python学习Day1 计算机原理编程思维

    一.学习思想:3W+1H   学什么(what).为什么学(why).用在哪里(where).怎么用(how) 学习编程语言重在代码量.代码量.代码量! 二.计算机五大组成部分,三大核心: 五大组成部 ...

  4. faster rcnn源码阅读笔记3

  5. EOS的发币逻辑

    [EOS的发币逻辑] EOS官网的Guide中(参考[1]),描述了如何发自己的Token: 1.创建一个contract. 2.有一些create.transfer.close action. 3. ...

  6. apt与apt-get命令的区别与解释

    [apt与apt-get命令的区别与解释] Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入.其实早在 2014 年,apt 命令就已经发布了第一个稳定版,只是直到 20 ...

  7. Selenium Java关闭浏览器

    在学习selenium的过程中发现一个问题,各种博客/教程都是教人用selenium的quit()和close()方法关闭浏览器. 但这不是我要的结果.这两个方法的前提是,用webdriver打开浏览 ...

  8. m_sequencer、p_sequencer

    https://blog.csdn.net/zhajio/article/details/79608323 p - parent sequencer - 要处理的实际sequencer类型的句柄,这个 ...

  9. 深拷贝 浅拷贝 python

    1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝对象及其子对象 一个很好的例子: # -*-coding:utf-8 -*- ...

  10. layui禁止某些导航菜单展开

    官网上查得监听导航菜单的点击 当点击导航父级菜单和二级菜单时触发,回调函数返回所点击的菜单DOM对象: element.on('nav(filter)', function(elem){ consol ...