前言:

TypeScript官网断断续续看过几遍,不知道项目中如何使用,有机会还是要实践一下。现在再把文档上不懂的知识点理一遍。

基础类型

1.什么是元组Tuple?

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

  1. //声明一个元组类型
  2. let x: [string, number];
  3.  
  4. //初始化正确
  5. x = ['hello', 10]; //OK
  6.  
  7. //初始化错误
  8. x = [10, 'hello']; //Error
  9.  
  10. //初始化正确
  11. x = ['world', 11]; //OK

2.什么是枚举?

enum类型是对JavaScript标准数据类型的一个补充。使用枚举类型可以为一组数值赋予友好的名字。

  1. enum Color {Red = 1, Green = 2, Blue = 4}
  2. let c: Color = Color.Green;
  3.  
  4. let colorName: string = Color[2];

3.Any类型

不希望类型检查其对这些值进行检查而是直接让它们通过编译阶段的检查。

  1. let notSure: any = 4;
  2. notSure = "maybe a string instead";
  3. notSure = false;

和Object类型的变量的不同:

  1. notSure.ifItExists(); //okay
  2. notSure.toFixed(); //okay
  3.  
  4. let prettySure: Object = 4;
  5. prettySure.toFixed(); //Error

当你只知道数组中一部分数据的类型时:

  1. let list: any[] = [1, true, "free"];
  2. list[1] = 100; //okay

4.Void类型

与any类型相反,它表示没有任何类型。

  1. function warnUser(): void {
  2. console.log("这是我的提示信息!");
  3. }

只能赋予它undefined和null

  1. let unusable: void = undefined;

5.NUll和Undefined

null和undefined默认是所有类型的子类型,就是说你可以把null和undefined赋值给number类型的变量

  1. let u: undefined = undefined;
  2. let n: null = null;

指定--strictNullChecks标记,null和undefined只能赋值给void和它们各自。

6.Never

never类型表示永不存在的值的类型。

  1. // 返回never的函数必须存在无法达到的终点
  2. function error(message: string): never {
  3. throw new Error(message);
  4. }
  5.  
  6. // 推断的返回值类型为never
  7. function fail() {
  8. return error("Something failed");
  9. }
  10.  
  11. // 返回never的函数必须存在无法达到的终点
  12. function infiniteLoop(): never {
  13. while (true) {
  14. }
  15. }

7.Object表示非原始类型

  1. declare function create(o: object | null): void;
  2. create({prop: 0}); //OK
  3. create(null); //OK
  4.  
  5. create(42); //Error
  6. create("string"); //Error
  7. create(false); //Error
  8. create(undefined); //Error

8.类型断言

“相信我,我知道自己在干什么”,类型断言好比其它语言里的类型转换。

类型断言有两种形式

(1)尖括号语法

  1. let someValue: any = "this is a string";
  2. let strLength: number = (<string>someValue).length;

(2)as语法

  1. let someValue: any = "this is a string";
  2. let strLength: number = (someValue as string).length;

9.尽可能地使用let来代替var

(完)

学习笔记:TypeScript入门——基础类型的更多相关文章

  1. Redis学习笔记(3) Redis基础类型及命令之二

    1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等, ...

  2. Redis学习笔记(2) Redis基础类型及命令之一

    1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 > SET bar OK # 获取Redis所有键 ...

  3. Redis学习笔记之入门基础知识——其他特性

    1.订阅(subscribe)与发布(publish) 用户订阅某一个频道,频道发布新的信息时,会将信息告知用户 2.数据安全 1)     快照持久化(时间点转储,实质是数据副本) 操作:SAVA. ...

  4. Redis学习笔记之入门基础知识——五种数据类型

    1) 字符串 SET设置值,GET获取值,DEL删除值 INCR key-name将键存储的值加上1       DECR key-name将键存储的值减去1 INCRBY key-name amou ...

  5. Redis学习笔记之入门基础知识——简介

    非关系型数据库,存储的数据类型:字符串(STRING).列表(LIST).集合(SET).散列表(HASH).有序集合(ZSET) 持久化:时间点转储(point-in-time-dump)(快照). ...

  6. 卷积神经网络(CNN)学习笔记1:基础入门

    卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Vie ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  9. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

随机推荐

  1. web——前后端通信

    前端向后台传输数据: 传输方法:post  get 区别: (1)get:用于从服务器获取数据,将参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看 ...

  2. vue1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. SpringBoot与Dubbo整合-项目搭建

    本章节建立生产者和消费者来演示dubbo的demo 生产者:springboot-dubbo-provider 和 消费者:springboot-dubbo-consumer 工程配置详解 Apach ...

  4. MATLAB —— 编程基础

    字符串 abs —— 输出字符串ascii码 strvcat —— 把多个字符串横向连接成长字符串 fprintf —— 把格式化的文本写到文件中或显示屏上 int2str —— 整数转换成字符串 n ...

  5. HDU 1576 A/B 数论水题

    http://acm.hdu.edu.cn/showproblem.php?pid=1576 写了个ex_gcd的模板...太蠢导致推了很久的公式 这里推导一下: 因为 1 = BX + 9973Y ...

  6. wscript shell

    http://blog.csdn.net/songques/article/details/8309569 http://baike.baidu.com/link?url=_P6z73_Ih9R79T ...

  7. 没有killall命令的解决方法

    没有killall命令的解决方法 -bash: killall: command not found https://www.byte128.com/archives/231.html 执行killa ...

  8. js39---组合模式,查找遍历树

    /** *有这样一个需求 *有一个学校有2个班(一班,二班) *每个班级分2个小组(一班一组,一班二组,二班一组,二班二组) *学校计算机教室有限,每一个小组分着来上课. *考试的时候大家一起考 *请 ...

  9. android图像处理系列之五--给图片添加边框(中)

    前面一篇讲到给图片加边框的方式,只能给图片加一些有规则的边框,如果想加一些比较精美的效果,就有点麻烦了.下面就给出解决这个问题的思路. 思路是:一些比较精美的花边图片我们是很难用代码控制,就目前本人水 ...

  10. thinkphp5空控制器和空操作

    thinkphp5空控制器和空操作 一.总结 1.空控制器和空操作用:空控制器和空操作都是为了防止网站上的用户恶意输入,网站上线的话必须加上, 2.空操作:空操作就是在一般的控制器里面加上一个 _em ...