前言:

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

基础类型

1.什么是元组Tuple?

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

//声明一个元组类型
let x: [string, number]; //初始化正确
x = ['hello', 10]; //OK //初始化错误
x = [10, 'hello']; //Error //初始化正确
x = ['world', 11]; //OK

2.什么是枚举?

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

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

3.Any类型

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

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;

和Object类型的变量的不同:

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

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

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

4.Void类型

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

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

只能赋予它undefined和null

let unusable: void = undefined;

5.NUll和Undefined

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

let u: undefined = undefined;
let n: null = null;

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

6.Never

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

// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
} // 推断的返回值类型为never
function fail() {
return error("Something failed");
} // 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}

7.Object表示非原始类型

declare function create(o: object | null): void;
create({prop: 0}); //OK
create(null); //OK create(42); //Error
create("string"); //Error
create(false); //Error
create(undefined); //Error

8.类型断言

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

类型断言有两种形式

(1)尖括号语法

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

(2)as语法

let someValue: any = "this is a string";
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. qqwry - 纯真ip库的golang服务

    qqwry 纯真 IP 库的一个服务.通过http提供一个ip地址归属地查询支持 软件介绍 我们大家做网站的时候,都会需要将用户的IP地址转换为归属地址功能,而之前的作法大都是从硬盘的数据文件中读取, ...

  2. UDP连接调用connect()函数

    UDP是一个无连接的协议,它没有像TCP中EOF之类的东西. 8.11 UDP的connect函数 除非套接字已连接,否则异步错误是不会反悔到UDP套接字的. 我们确实能够给UDP套接字调用conne ...

  3. 通过rng-tools自动补充熵池

    通过rng-tools自动补充熵池原文 https://blog.csdn.net/tiantao2012/article/details/78792046首先查看系统当前熵池的大小# cat /pr ...

  4. 7.Web Service 调用天气代码

    1. 2500多个城市天气预报 WEB服务公用事业 Endpoint:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx Disco: ...

  5. js数组sort方法详解

    在处理数组的时候,我们有时候需要对数组进行排序,排序的方法有很多种,但是最好最快的就是利用sort方法进行快速的排序. 我们来看一个例子: var arr1 = [6, 3, 4, 1, 2, 5, ...

  6. pipPython运维日记

    一 Python 工作环境管理 1.1 使用 pyenv 管理不同的Python 版本 克隆项目安装 git clone https://github.com/yyuu/pyenv.git ~/.py ...

  7. CDQZ 0003:jubeeeeeat

    0003:jubeeeeeat 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是 ...

  8. 网络最大流算法—Dinic算法及优化

    前置知识 网络最大流入门 前言 Dinic在信息学奥赛中是一种最常用的求网络最大流的算法. 它凭借着思路直观,代码难度小,性能优越等优势,深受广大oier青睐 思想 $Dinic$算法属于增广路算法. ...

  9. [ Java ] [ Eclipse ] 加速 Eclipse 載入速度-轉載

    加速 Eclipse 載入速度-轉載 https://read01.com/NJjNOB.html

  10. 洛谷 P2837 晚餐队列安排

    P2837 晚餐队列安排 题目背景 Usaco Feb08 Bronze 题目描述 为了避免餐厅过分拥挤,FJ要求奶牛们分2批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想,所有第2批就餐 ...