前言:

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. Qt Quick 之 PathView 具体解释

    PathView ,顾名思义,沿着特定的路径显示 Model 内的数据. Model 能够是 QML 内建的 ListModel . XmlListModel ,也能够是在 C++ 中实现的 QAbs ...

  2. 【剑指Offer学习】【面试题27:二叉搜索树与双向链表】

    题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建不论什么新的结点.仅仅能调整树中结点指针的指向. 比方输入图4.12 中左边的二叉搜索树,则输出转换之后的排序现向链表. ...

  3. POJ 2227 FloodFill (priority_queue)

    题意: 思路: 搞一个priority_queue 先把边界加进去 不断取最小的 向中间扩散 //By SiriusRen #include <queue> #include <cs ...

  4. 中小型WEB系统权限日志数据表设计

    中小型WEB系统权限日志数据表设计 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjc1MDU3OA==/font/5a6L5L2T/fontsi ...

  5. 联合体union用在何处?

    程序设计刚開始学习的人在学习时,总想问:"这个东东有什么用?"于是,在建设有关的教学资源时,也便总从这个角度,试图给出一些案例,这是一个将刚開始学习的人作为教学目标人群的人该干的事 ...

  6. Android app : use html or native?

    Android app可分为两种:网络(html)应用程序和原生(native)应用程序 首先,我们先来讨论下如何判断一个app是html实现还是native实现. 设置-->>开发者选项 ...

  7. leetcode -day29 Binary Tree Inorder Traversal &amp; Restore IP Addresses

    1.  Binary Tree Inorder Traversal Given a binary tree, return the inorder traversal of its nodes' ...

  8. ubuntu-文件管理、编辑

    1.创建单层文件夹 mkdir test 如果你想要创建多层文件夹,这时候你需要添加一个参数-p mkdir -p t1/t2/t3 如果你不加-p的话,它会提示说找不到目录 2.分屏查看内容 mor ...

  9. Linux下PortSentry的配置

    Linux下PortSentry的配置       前年写过<IDS与IPS功能分析>一文,受到广大读者关注,现将近期有关IDS配置的文章和大家分享.    Internet上的服务器一般 ...

  10. 数组&对象

    一.遍历数组的几种方式   var arr = [1,2,3]; Array.prototype.test=function(){} arr.name='jq'   1. for  /* * inde ...